This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
RE: FW: Mailboxes - priorities of messages
- From: Gary Thomas <gary at mlbassoc dot com>
- To: Han Hoekstra <Han dot Hoekstra at WirelessValue dot nl>
- Cc: 'Gorjup Matthias' <Matthias dot Gorjup at SIEMENS dot AT>,"''Ecos-Discuss (E-Mail)'" <ecos-discuss at ecos dot sourceware dot org>
- Date: Tue, 29 Jun 2004 06:14:30 -0600
- Subject: RE: [ECOS] FW: [ECOS] Mailboxes - priorities of messages
- Organization: MLB Associates
- References: <20040629120509.CEA6A100004@hermes.chez-thomas.org>
On Tue, 2004-06-29 at 06:05, Han Hoekstra wrote:
> Hey,
>
> I have had the same problem in one of my projects and what I did is trigger
> the receive process using a semaphore and have it check multiple mailboxes,
> the one with the highest priority first and the one with the lowest priority
> last. Also I made my own mailbox implementation which uses the eCos Mailbox
> API to implement the actual message queue, the only thing my mailbox does
> extra is trigger the semaphore every time a message is placed in the queue,
> so that the receive process will start. The sending process only has to
> place the message in the correct mailbox, which corresponds to the priority
> of the message.....
You could also do a similar thing, except instead of a semaphore, use a
flag. This is an array of bits and your threads can set/clear them
individually, and more importantly wait for them to change state.
Use one bit per "priority" of mailbox. Then when one is set, your
thread can awaken (ala a semaphore wait/post). This is a lighter
solution (a single flag variable vs multiple semaphores), plus when
the receiving thread is awakened, it can determine immediately (without
any other kernel interaction) which mailbox(es) have data.
>
> Greetings,
> Han
> -----Original Message-----
> From: ecos-discuss-owner@ecos.sourceware.org
> [mailto:ecos-discuss-owner@ecos.sourceware.org] On Behalf Of Gorjup Matthias
> Sent: dinsdag 29 juni 2004 12:48
> To: ''Ecos-Discuss (E-Mail)'
> Subject: [ECOS] FW: [ECOS] Mailboxes - priorities of messages
>
> Hello Andrew,
>
> Here are some details of our mBox problem;
>
> When more than one thread (task) is using the same mBox to communicate with
> one another thread, the send/received mails(messages) has to be kept in a
> message qeue. ( or they arrive to mBox and kept in an order qeue).
>
> In this message qeue, we need to put the process of the messages (mails) in
> a prioritisation. For example , a critical mail send by a timeout function
> has to be processed before a user request mail which is send through the
> same mBox to the same thread.
>
> I hope this gives you enough info.
>
> Regards.
> Tolga
>
>
>
> -----Original Message-----
> From: Gorjup Matthias
> To: 'Tolga SIMSEK' (E-Mail)
> Sent: 29.06.2004 12:34
> Subject: WG: [ECOS] Mailboxes - priorities of messages
>
>
>
> -----Ursprungliche Nachricht-----
> Von: Andrew Lunn [ mailto:andrew@lunn.ch <mailto:andrew@lunn.ch> ]
> Gesendet: Dienstag, 29. Juni 2004 11:29
> An: Gorjup Matthias
> Cc: 'ecos-discuss@ecos.sourceware.org'
> Betreff: Re: [ECOS] Mailboxes - priorities of messages
>
>
> On Tue, Jun 29, 2004 at 10:02:32AM +0200, Gorjup Matthias wrote:
> > Hello,
> >
> > we are porting a special ethernet driver to eCos and we would need to
> > implement prioritozed mailbox messages for communication between
> threads. Is
> > it possible to use priorities for mbox messages? If not, is there some
>
> > workaround or another solution that we could use?
>
> Prioritized could mean many different things. Please could you be more
> specific. Are you talking about the threads blocking for access to the mbox,
> the messages withing the mbox, or some other priority feature.
>
> 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 <gary@mlbassoc.com>
MLB Associates
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss