From: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
To: Bill Gatliff <bgat@domain.hid>
Cc: xenomai@xenomai.org, xenomai@xenomai.org
Subject: [Xenomai-core] Re: [Xenomai-help] Xenomai v2.3.1
Date: Tue, 20 Mar 2007 17:56:58 +0100 [thread overview]
Message-ID: <4600125A.6000304@domain.hid> (raw)
In-Reply-To: <46000AFE.9070504@domain.hid>
Bill Gatliff wrote:
> Guys:
>
> Philippe Gerum wrote:
>
>> [posix]
>> * Fix pthread_cond_wait() upon signal receipt (grab mutex anew).
>>
>
>
> Probably OT, but someone was complaining to me the other day that
> pthreads running on SCHED_FIFO/SCHED_RR that are blocked on mutexes
> don't release in priority order. This was on a stock 2.6.18 kernel,
> "recent glibc" (I didn't catch which version or config), ARM9 platform.
>
> First question: Is this actually true?
>
> Second question: Does Xenomai fix this? Do more recent kernel
> developments fix this?
>
> Point me at the appropriate RTFM or code if that's the appropriate
> answer. :)
The appropriate RTFM is the POSIX spec [1]
In short, it says: "If there are threads blocked on the mutex object
referenced by 'mutex' when pthread_mutex_unlock() is called, resulting
in the mutex becoming available, the scheduling policy shall determine
which thread shall acquire the mutex."
So, the correct implementation is to release a mutex in priority order.
I think the glibc implements this correctly (at least NPTL), on the
other hand, I believe it is not true for threads running with the
SCHED_OTHER policy, in order to prevent starvation.
Xenomai POSIX skin implements this correctly as well. To be more
specific about this, Xenomai mutexes, like mutexes of all other skins,
are built using the "xnsynch_t" objects [2] which has two possible ways
of implementing its internal wait queue: either in FIFO order if
xnsynch_init is passed the XNSYNCH_FIFO flag, or in priority order if
xnsynch_init is passed the XNSYNCH_PRIO flag. pthread_mutex_init passes
the XNSYNCH_PRIO flag to xnsynch_init.
[1]:http://www.opengroup.org/onlinepubs/000095399/functions/pthread_mutex_lock.html
[2]:http://www.xenomai.org/documentation/trunk/html/api/group__synch.html
--
Gilles Chanteperdrix
next prev parent reply other threads:[~2007-03-20 16:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-20 8:39 [Xenomai-core] Xenomai v2.3.1 Philippe Gerum
2007-03-20 10:53 ` Gilles Chanteperdrix
2007-03-20 16:25 ` [Xenomai-core] Re: [Xenomai-help] " Bill Gatliff
2007-03-20 16:56 ` Gilles Chanteperdrix [this message]
2007-03-20 17:03 ` Bill Gatliff
2007-03-20 17:34 ` Gilles Chanteperdrix
2007-03-20 17:28 ` Jan Kiszka
2007-03-20 20:11 ` [Xenomai-core] " Gilles Chanteperdrix
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=4600125A.6000304@domain.hid \
--to=gilles.chanteperdrix@xenomai.org \
--cc=bgat@domain.hid \
--cc=xenomai@xenomai.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.