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

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to