From: Jonathan Haws <Jonathan.Haws@sdl.usu.edu>
To: "linux-embedded@vger.kernel.org" <linux-embedded@vger.kernel.org>
Subject: POSIX Message Queue Priority Scheduling
Date: Tue, 31 Oct 2017 15:32:23 +0000 [thread overview]
Message-ID: <1509463943.9813.2.camel@sdl.usu.edu> (raw)
Can someone explain to me how message queues handle waking multiple
threads blocked on a single message queue?
My situation is I have multiple writers blocking on a full message
queue, each posting messages with priority equal to the thread
priority. I want to make sure they wake and post in priority order,
however my application is behaving as if they are waking in FIFO order
(i.e. the order in which they blocked). Each blocking thread is
scheduled with the SCHED_FIFO policy with a different priority with
system level scope.
I've searched the Internet high and low for something describing how
this should work and all I can find is POSIX man pages describing that
multiple blockers wake in priority order **if Priority Scheduling is
supported**. Since the kernel scheduler is a priority scheduler I
would think that the threads would wake in priority order and post to
the queue, however that doesn't appear to be the case. I'm sure I'm
just missing some subtle detail and was hoping the experts here on
this list can help shine some light on what I'm seeing, since its at
the kernel level that these threads are made ready to run.
I have a small test application that I can post here if necessary. If
this isn't the right place to ask this, by all means let me know and
direct me to the right forum.
Thanks!
Jon
next reply other threads:[~2017-10-31 15:32 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-31 15:32 Jonathan Haws [this message]
[not found] ` <CAJUC52E3gsjSzdkvJD+gL8WSp93ZtabhShX_BHBZJRLDYWZbAg@mail.gmail.com>
2017-10-31 16:49 ` POSIX Message Queue Priority Scheduling Jonathan Haws
2017-11-10 2:34 ` Jonathan Haws
[not found] ` <5C01B066-EEC2-4D24-B9E6-D6E6AF8BF212@gmail.com>
[not found] ` <1510281787.2403.14.camel@sdl.usu.edu>
[not found] ` <E100FFF7-7D54-4296-83CF-0950BEE222DB@gmail.com>
[not found] ` <1510283635.2403.18.camel@sdl.usu.edu>
[not found] ` <CAJUC52HYx1pWt9iHFN6Lc0-SB6wA2zBxX9nQYxzPh+R7tqdVgw@mail.gmail.com>
2017-11-10 19:04 ` Jonathan Haws
2017-11-14 23:29 ` Jonathan Haws
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1509463943.9813.2.camel@sdl.usu.edu \
--to=jonathan.haws@sdl.usu.edu \
--cc=linux-embedded@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).