Philippe Gerum wrote: > On Sun, 2010-04-18 at 15:26 +0200, Philippe Gerum wrote: >> On Sun, 2010-04-18 at 15:12 +0200, Jan Kiszka wrote: >>> From: Jan Kiszka <jan.kis...@siemens.com> >>> >>> This adds rtdm_rt_capable(), a function that can be used by drivers to >>> detect callers that could issue a service request also from the >>> (typically preferred) real-time context. If that is the case, the driver >>> can trigger a restart of the request if the current context is not >>> real-time. >>> >>> CC: Philippe Gerum <r...@xenomai.org> >>> CC: Alexis Berlemont <berlemont.h...@free.fr> >>> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com> >>> --- >>> include/rtdm/rtdm_driver.h | 6 ++++++ >>> ksrc/skins/rtdm/drvlib.c | 25 +++++++++++++++++++++++++ >>> 2 files changed, 31 insertions(+), 0 deletions(-) >>> >>> diff --git a/include/rtdm/rtdm_driver.h b/include/rtdm/rtdm_driver.h >>> index 0fc1496..45be404 100644 >>> --- a/include/rtdm/rtdm_driver.h >>> +++ b/include/rtdm/rtdm_driver.h >>> @@ -1296,6 +1296,12 @@ static inline int rtdm_in_rt_context(void) >>> { >>> return (rthal_current_domain != rthal_root_domain); >>> } >>> + >>> +static inline int rtdm_rt_capable(void) >>> +{ >>> + return xnpod_shadow_p(); >>> +} >>> + >> This won't do what your comment states; xnpod_shadow_p() would always >> return false on behalf of a relaxed shadow, since it tests the status >> bits of the current Xenomai thread, which has to be the root one in that >> case. xnpod_shadow_p is to be used in primary context only, to >> distinguish between kernel-based and userland Xenomai callers. >> >> What you want is probably something like: >> >> static inline int rtdm_rt_capable(void) >> { >> return xnshadow_thread(current) != NULL; >> } > > Btw, the predicate as you defined it would not work over kernel-based > Xenomai threads. rtdm_rt_capable() is ambiguous here.
(!xnpod_root_p() || xnshadow_thread(current) != NULL) ? That would also avoid dereferencing current in a potentially unsafe context (if we still have such problematic archs). Jan
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core