From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26436 invoked by alias); 20 Jun 2005 23:47:33 -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 26408 invoked by uid 22791); 20 Jun 2005 23:47:25 -0000 Received: from sta-206-168-96-204.rockynet.com (HELO hermes.chez-thomas.org) (206.168.96.204) by sourceware.org (qpsmtpd/0.30-dev) with ESMTP; Mon, 20 Jun 2005 23:47:25 +0000 Received: by hermes.chez-thomas.org (Postfix, from userid 2000) id 9FB5F100427; Mon, 20 Jun 2005 17:47:23 -0600 (MDT) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by hermes.chez-thomas.org (Postfix) with ESMTP id 7B387100044; Mon, 20 Jun 2005 17:47:18 -0600 (MDT) From: Gary Thomas To: "Ali, Khurram" Cc: Andrew Lunn , eCos Discussion In-Reply-To: <32A0F6EE19ECF646A9CF370C3AB15EBE016A8B80@SVR-ALH-EXC-02.mgc.mentorg.com> References: <32A0F6EE19ECF646A9CF370C3AB15EBE016A8B80@SVR-ALH-EXC-02.mgc.mentorg.com> Content-Type: text/plain Date: Mon, 20 Jun 2005 23:47:00 -0000 Message-Id: <1119311238.15963.50.camel@hermes> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: RE: [ECOS] POSIX Queue Suspension X-SW-Source: 2005-06/txt/msg00185.txt.bz2 On Mon, 2005-06-20 at 16:58 -0500, Ali, Khurram wrote: > FYI > > I got the latest source using anonymous cvs. Used the default > configuration with POSIX support. I see the behavior which I was > expecting. > > I now have another question: How do I add support for printf? Which > library is this part of? I am using an x86 PC as my target. > What kind of support do you think you need? If you have the POSIX environment running, you've everything already. Perhaps you're asking about [interrupt driven] serial drivers? > Thank you, > Khurram > > -----Original Message----- > From: ecos-discuss-owner@ecos.sourceware.org > [mailto:ecos-discuss-owner@ecos.sourceware.org] On Behalf Of Ali, > Khurram > Sent: Monday, June 20, 2005 1:49 PM > To: Andrew Lunn > Cc: eCos Discussion > Subject: RE: [ECOS] POSIX Queue Suspension > > > 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. > > Thread L is the highest priority thread that has been waiting the > longest. Shouldn't it be resumed first? > > Agreed that other threads also have the same priority, but since there > is an additional restriction of "waiting the longest" I would assume > that we can have two or more threads at the same priority? > > Am I missing something? > > Khurram > > -----Original Message----- > From: Andrew Lunn [mailto:andrew@lunn.ch] > Sent: Monday, June 20, 2005 12:22 PM > To: Ali, Khurram > Cc: eCos Discussion > Subject: Re: [ECOS] POSIX Queue Suspension > > 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 > > -- Gary Thomas -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss