From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 17956 invoked by alias); 20 Jun 2005 17:22:44 -0000 Mailing-List: contact ecos-discuss-help@ecos.sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: ecos-discuss-owner@ecos.sourceware.org Received: (qmail 17582 invoked by uid 22791); 20 Jun 2005 17:22:26 -0000 Received: from londo.lunn.ch (HELO londo.lunn.ch) (80.238.139.98) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Mon, 20 Jun 2005 17:22:26 +0000 Received: from lunn by londo.lunn.ch with local (Exim 3.36 #1 (Debian)) id 1DkPyS-0007Qo-00; Mon, 20 Jun 2005 19:22:16 +0200 Date: Mon, 20 Jun 2005 17:22:00 -0000 To: "Ali, Khurram" Cc: eCos Discussion Message-ID: <20050620172216.GF17597@lunn.ch> Mail-Followup-To: "Ali, Khurram" , eCos Discussion References: <32A0F6EE19ECF646A9CF370C3AB15EBE016A8A7E@SVR-ALH-EXC-02.mgc.mentorg.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <32A0F6EE19ECF646A9CF370C3AB15EBE016A8A7E@SVR-ALH-EXC-02.mgc.mentorg.com> User-Agent: Mutt/1.5.9i From: Andrew Lunn Subject: Re: [ECOS] POSIX Queue Suspension X-SW-Source: 2005-06/txt/msg00178.txt.bz2 On Mon, Jun 20, 2005 at 10:54:00AM -0500, Ali, Khurram wrote: > Hello, > > I have two POSIX threads that are waiting to receive on a POSIX queue. > Thread L suspends on the queue first. Thread K then suspends on the > queue. However, when Thread J sends an element to the queue. Thread K is > resumed first. > > All threads have the same priority. All queue accesses are also made > with the same priority. Shouldn't Thread L be resumed first. > > What could I be doing wrong? You don't seem to of read the POSIX standard. http://www.opengroup.org/onlinepubs/009695399/functions/mq_receive.html If the specified message queue is empty and O_NONBLOCK is not set in the message queue description associated with mqdes, mq_receive() shall block until a message is enqueued on the message queue or until mq_receive() is interrupted by a signal. If more than one thread is waiting to receive a message when a message arrives at an empty queue and the Priority Scheduling option is supported, then the thread of highest priority that has been waiting the longest shall be selected to receive the message. Otherwise, it is unspecified which waiting thread receives the message. If the specified message queue is empty and O_NONBLOCK is set in the message queue description associated with mqdes, no message shall be removed from the queue, and mq_receive() shall return an error. So eCos behavious seems correct to me. Andrew -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss