This is the mail archive of the ecos-patches@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Better POSIX compliance for mq_timedsend(), mq_timedreceived()


Hi,

The attached patch attempts to correct a problem with mq_timedsend() and
mq_timedreceived() when used with very short timeouts.  According to POSIX:

mq_timedsend(): "Under no circumstance shall the operation fail with a
timeout if there is sufficient room in the queue to add the message
immediately."

mq_timedreceive(): "Under no circumstance shall the operation fail with
a timeout if a message can be removed from the message queue immediately."

However, the eCos implementation (2.0) seems to time out whenever it
can, regardless of whether the operation could actually be performed at
the time.  (I noticed this when I tried to use an abstime equivalent to
a zero timeout, in order to achieve a one-shot non-blocking operation
without actually changing the mode of the queue.)

-- 
Rickard Westman                  Phone: +46 13 218120
Software Engineer                GSM:   +46 70 3020918
27M Technologies                 Email: rwestman@27m.se

Attachment: mq_timed.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]