lkml.org 
[lkml]   [2004]   [Mar]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: posix message queues, was Re: 2.6.4-rc1-mm1
bert hubert wrote:

>On Sun, Feb 29, 2004 at 02:06:17PM -0800, Andrew Morton wrote:
>
>
>
>>- Added the POSIX message queue implementation. We're still stitching
>> together a decent description of all of this. Reference information is at
>> http://www.mat.uni.torun.pl/~wrona/posix_ipc/
>> and
>> http://www.opengroup.org/onlinepubs/007904975/basedefs/mqueue.h.html
>>
>>
>
>I can confirm that basic functionality is there. Both blocking and
>nonblocking operations work as advertised. Queue properly blocks when full
>or empty.
>
>mq_timedsend does not wait, it immediately returns ETIMEOUT with the queue
>is full:
>
> struct timespec ts;
> ts.tv_sec=1;
> ts.tv_nsec=0;
> sprintf(msgptr,"%05d %s",c,stime);
>
> if ( mq_timedsend(mqd,msgptr,msglen,msg_prio, &ts) )
> {
> perror("mq_send()");
> break;
> }
>
>results in:
>
>$ ./mqreceive /Q32x128
>1: priority 0 len 64 text 00001 Mon Mar 1 12:20:11 2004
>$ ./mqreceive /Q32x128
>1: priority 0 len 64 text 00001 Mon Mar 1 12:20:11 2004
>$ ./mqsend /Q32x128
>$ ./mqsend /Q32x128
>$ ./mqsend /Q32x128
>mq_send(): Connection timed out <- immediately
>
>
It _should_ return immediately. mq_timedsend timeout must be given as
absolute value, so if you want to have one second timeout from now,
you must do:

ts.tv_sec = time(NULL) + 1;
ts.tv_nsec = 0;

And I don't have idea why POSIX defines timeout as absolute not relative
;-).

>I would very much advise Michal and Krzysztof to add some basic examples to
>their page. I had to scour the internet to find some working code.
>
>
Thats right. The above problem also shows that such examples can be
usefull. We are just now updating man pages for the library (there are
some obsolete informations) and I will prepare some well commented programs.

>Mounting the queuefs works but the fs, confusingly, is called mqueue and not
>mqueuefs.
>
>
As proc or msdos. Of course it can be changed if more people will want
'fs' suffix. Menuconfig help gives proper name.

Regards,
Krzysiek

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 14:01    [W:1.713 / U:0.224 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site