From: Philippe Gerum <rpm@xenomai.org>
To: Jan Kiszka <jan.kiszka@domain.hid>
Cc: grugh@domain.hid, xenomai-core <xenomai@xenomai.org>
Subject: Re: [Xenomai-core] [RFC] non-RT-safe rtdm_event_*wait
Date: Sat, 20 May 2006 14:21:12 +0200 [thread overview]
Message-ID: <446F09B8.6000609@domain.hid> (raw)
In-Reply-To: <446C264A.7040206@domain.hid>
Jan Kiszka wrote:
> Hi,
>
> attached is an experimental patch to allow blocking from non-RT context
> on RTDM events. Petr Cervenka made me think about this extension which
> could partially open RTDM drivers also for non-shadowed, i.e. standard
> Linux tasks.
>
> Why not simply shadowing non-RT waiters? Because this kind of sync
> support should be cheaper than adding yet another (though low-prio) task
> to the real-time domain ("should" == I didn't benchmark my believe). And
I would rather move the logic to the sync object at nucleus level since
it's a useful feature for all skins, but doing so, we would also drag a
fair amount of complexity just for the sake of not having to shadow a
Linux task. IMHO, leaving this at the skin level forks the
implementation of the synchronization management, which raises the issue
of duplicating functionalities only depending on the calling context.
Looking at the issue differently, we already know that we could shadow
SCHED_NORMAL/SCHED_OTHER threads without promoting them to the
SCHED_FIFO class - you actually submitted this patch, and it's waiting
for -rc2 to be released before I merge it into mainline.
Given that, a shadow thread which remains in secondary mode is seen as
suspended by the Xenomai scheduler, which means that the additional
overhead is close to nil (aside of an additional shadow tcb), until it
tries to grab the resource and thus moves to the primary domain, just
for going to sleep.
IOW, I would rather use the allow-non-SCHED_FIFO-shadow patch to allow
regular Linux tasks to pend seamlessly on Xenomai sync objects as true
shadows, and add to the rtdm blocking syscall handler some code that
would transparently promote any calling regular task as a Xenomai shadow
on the fly, before undergoing the request. The other advantage of such
approach is that the non-RT pending task is still known from the Xenomai
sub-system (/proc/xenomai/ interface and so on), which may be useful
given that it interacts with it. You could still apply a FIFO pending
order with mixed RT and non-RT tasks the same way.
Moving RTDM to native preemption would also be simpler, since RTDM would
expect the issue to be handled at core level directly, and in the
preempt-rt case, the issue of the caller's domain is actually a non-issue.
--
Philippe.
next prev parent reply other threads:[~2006-05-20 12:21 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-18 7:46 [Xenomai-core] [RFC] non-RT-safe rtdm_event_*wait Jan Kiszka
2006-05-20 12:21 ` Philippe Gerum [this message]
2006-05-22 7:52 ` Jan Kiszka
2006-05-22 10:09 ` Philippe Gerum
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=446F09B8.6000609@domain.hid \
--to=rpm@xenomai.org \
--cc=grugh@domain.hid \
--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.