From: Philippe Gerum <rpm@xenomai.org>
To: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Cc: Jan Kiszka <jan.kiszka@domain.hid>, xenomai@xenomai.org
Subject: Re: [Xenomai-core] Pending ownership and resource stealing
Date: Wed, 10 May 2006 20:39:51 +0200 [thread overview]
Message-ID: <44623377.2090801@domain.hid> (raw)
In-Reply-To: <17506.9231.555209.471522@domain.hid>
Gilles Chanteperdrix wrote:
> Philippe Gerum wrote:
> > This means that skins now _must_ fix their internal state when unblocked
> > from xnsynch_sleep_on() if they happen to track their own resource owner
> > field for instance, since they might become the owner of such resource
> > without any unlock/release/whatever routine being called at the said
> > skin level. I've fixed a couple of skins for that purpose (not checked
> > RTDM btw), but it would be safer if you could double-check the impact of
> > such change on the interfaces you've crafted.
>
> When waking up, how do we know that we are in the problematic situation
> ?
The only possible issue with the new implementation is when the skin
maintains its own specific data for tracking ownership of a resource,
that complements the synch::owner field of the core nucleus resource
object. The example code Jan has posted lately to raise the concern
about the XNBREAK issue is also demonstrative of the issue of pending
ownership, i.e.:
prio(task1) > prio(task2)
1. task1 grabs a resource
2. task1 sleeps for some time
3. task2 blocks requesting the resource
4. task1 wakes up from the sleep and releases the resource to task2
5. task1 wants the resource back immediately and calls
xnsynch_sleep_on() since the ownership has been transferred to task2
since step 4.
6a. old way: task1 would block and task2 would run anyway, with a PIP
boost, blocking task1 until the resource is released
6b. new way: task1 steals the resource previously granted to task2
directly from xnsynch_sleep_on(), but doing so, nobody downstream has
had a chance to update any skin-specific data, such as an additional
"owner" field.
The caller of xnsynch_sleep_on() in native/mutex.c illustrates this
(i.e. grab_mutex label).
Can we do the house keeping in the callback registered with
> xnsynch_register_cleanup, or are you talking of a different situation ?
>
>
It's different. The cleanup handler as described by Jan is only there to
perform some housekeeping chores on synch objects which get forcibly
released because their previous owner went away (typically xnpod_delete()).
--
Philippe.
next prev parent reply other threads:[~2006-05-10 18:39 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-10 7:58 [Xenomai-core] [bug] zombie mutex owners Jan Kiszka
2006-05-10 9:16 ` Dmitry Adamushko
2006-05-10 10:07 ` Jan Kiszka
2006-05-10 10:40 ` Philippe Gerum
2006-05-10 10:52 ` Philippe Gerum
2006-05-10 11:49 ` Jan Kiszka
2006-05-10 16:39 ` Philippe Gerum
2006-05-10 12:28 ` Philippe Gerum
2006-05-10 16:55 ` [Xenomai-core] Pending ownership and resource stealing Philippe Gerum
2006-05-10 17:34 ` Gilles Chanteperdrix
2006-05-10 18:39 ` Philippe Gerum [this message]
2006-05-10 20:00 ` Gilles Chanteperdrix
2006-05-10 21:25 ` Philippe Gerum
2006-05-11 17:17 ` Gilles Chanteperdrix
2006-05-11 22:39 ` Philippe Gerum
2006-05-10 17:34 ` Jan Kiszka
2006-05-10 21:23 ` Philippe Gerum
2006-05-11 7:56 ` Jan Kiszka
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=44623377.2090801@domain.hid \
--to=rpm@xenomai.org \
--cc=gilles.chanteperdrix@xenomai.org \
--cc=jan.kiszka@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.