On Thu, 2007-06-07 at 13:57 -0500, NZG wrote:
> When writing from NRT to a real time pile (open, write, close).
> Are message boundaries preserved based upon the length of the write call?
>
It should yes, that's the main difference between this interface and
other RT fifo implementations. rt_pipe_stream() works the other way,
though (i.e. bytestream mode).
> It's not working for me. The code below returns success, but calling
>
> err = rt_pipe_read(comp,k,sizeof(kommand_t),TM_NONBLOCK);
> or
> err = rt_pipe_read(comp,k,sizeof(kommand_t),100);
>
> from RT space on the same pipe never returns any data
>
> err = rt_pipe_read(comp,k,sizeof(kommand_t),TM_NONBLOCK);
> always returns err
> 0x0b, Resource temporarily unavailable
>
> err = rt_pipe_read(comp,k,sizeof(kommand_t),100);
> always returns err:
> 0x6e, Connection timed out
>
Please send a compilable standalone test, so that we get a clear view of
what fails, and of the current runtime conditions when that fails.
> NZG
>
> code specifics follow...............
>
> int err;
> kommand_t k = {
> .type = KILLCYCLE,
> };
>
> int cfd = open(COMMANDPIPE, O_WRONLY|O_SYNC);
>
> if(cfd<0){
> printf("can't open %s (%s)\n",COMMANDPIPE, strerror(-cfd));
> fflush(stdout);
> return;
> }
>
> printf("sizeof kommand_t = %u\n",sizeof(kommand_t));
>
> err=write(cfd,&k,sizeof(kommand_t));
>
> if(err>=0)printf("wrote %u bytes to %s\n",err,COMMANDPIPE);
>
> if(err<0)printf("err writing to %s (%s)\n",COMMANDPIPE,
> strerror(errno));
>
>
> if(close(cfd)<0)printf("couldn't close %s\n",COMMANDPIPE);
>
>
>
>
> _______________________________________________
> Xenomai-help mailing list
> [email protected]
> https://mail.gna.org/listinfo/xenomai-help
--
Philippe.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help