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;
> }
> 

Thanks, will fix.

Jan

PS: Sorry for the From: mess - user error while feeding my posting script.

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