From: Thomas Gleixner <tglx@linutronix.de>
To: Jakub Jelinek <jakub@redhat.com>
Cc: Sebastien Dugue <sebastien.dugue@bull.net>,
Ingo Molnar <mingo@elte.hu>, LKML <linux-kernel@vger.kernel.org>,
Ulrich Drepper <drepper@redhat.com>
Subject: Re: [RFC][PATCH RT 0/2] futex priority based wakeup
Date: Wed, 10 May 2006 19:02:01 +0200 [thread overview]
Message-ID: <1147280521.27820.329.camel@localhost.localdomain> (raw)
In-Reply-To: <20060510150140.GR14147@devserv.devel.redhat.com>
On Wed, 2006-05-10 at 11:01 -0400, Jakub Jelinek wrote:
> But, there are 2 other futexes used by condvars - internal condvar's lock
> and __data.__futex. If the associated mutex uses PI protocol, then
> I'm afraid the internal condvar lock needs to follow the same protocol
> (i.e. use FUTEX_*LOCK_PI), otherwise a low priority task calling
> pthread_cond_* and acquiring the internal lock, then scheduled away
> indefinitely because of some middle-priority CPU hog could delay
> some high priority task calling pthread_cond_* on the same condvar.
Did not think about __data.__lock
I said "hack_alert" explicitely as this was just a work around, so we
could use an PI futex for the outer one, which was used to protect other
things too. The assmebler code corrupted the lock field of the outer
mutex with 0/1/2.
> But, there is a problem here - pthread_cond_{signal,broadcast} don't
> have any associated mutexes, so you often don't know which type
> of protocol you want to use for the internal condvar lock.
> Now, for the __data.__futex lock POSIX seems to be more clear,
> all it says is that the wake up should happen according to the scheduling
> policy (but, on the other side for pthread_mutex_unlock it says the same
> and we still use FIFO there).
Sebastians patch might solve this.
Is there a way to (pre)set the policy of the inner lock or is there any
other solution in sight ?
tglx
next prev parent reply other threads:[~2006-05-10 16:59 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-10 9:26 Sébastien Dugué
2006-05-10 10:08 ` Ingo Molnar
2006-05-10 13:03 ` Sébastien Dugué
2006-05-10 14:32 ` Thomas Gleixner
2006-05-10 15:01 ` Jakub Jelinek
2006-05-10 17:02 ` Thomas Gleixner [this message]
2006-05-11 8:56 ` Sébastien Dugué
2006-05-16 10:36 ` Jakub Jelinek
2006-05-18 8:51 ` Sébastien Dugué
2006-05-12 13:32 ` Pierre Peiffer
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=1147280521.27820.329.camel@localhost.localdomain \
--to=tglx@linutronix.de \
--cc=drepper@redhat.com \
--cc=jakub@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=sebastien.dugue@bull.net \
/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
Powered by JetHome