On Mon, 2007-06-25 at 09:46 +0200, Johan Borkhuis wrote:
> I am building an OS-abstraction layer for our application, and for this
> I would like to know the RT-status of a task.
> Using the rt_task_set_mode function it is possible to switch between RT
> and non-RT (using T_PRIMARY). But I would like to know what the state is
> of the current task. I did not find a function to retrieve the RT-state
> of a task; is a function available that will return the status of a task?
>
rt_task_inquire(), check the status field for XNRELAX; if set, your task
runs in secondary mode. Note: this method is currently an ugly hack,
because you should be allowed to check for something like T_SECONDARY
there instead, but unfortunately, you can't for obscure historical
reasons. Cleanup of that mess is pending.
> For the moment I am using the code shown below. Does this code work:
>
Not as you would expect, because rt_task_set_mode() will send the caller
to the primary domain, but a current glitch in the implementation even
forgets to set the T_PRIMARY bit in the returned mask.
> rt_task_set_mode(0,0, &var);
> if(var&T_PRIMARY)
> { /* Primary mode */
> ....
> }
> else
> { /* Secondary mode */
> ....
> }
>
> I would like to use this for a printf-implementation, where the text is
> printed if the task is non-RT or send to a logging task is the task is
> RT. I would like to call this code from Xenomai tasks, but also from
> plain Linux tasks. Is this possible?
>
A library doing exactly this is pending, and due for merge before -rc1
is out. If you want to use it on top of 2.3.x, you may want to adapt it
locally:
http://www.rts.uni-hannover.de/rtaddon/patches/xenomai/librtutils.patch
> Kind regards,
> Johan Borkhuis
>
>
> _______________________________________________
> Xenomai-help mailing list
> [email protected]
> https://mail.gna.org/listinfo/xenomai-help
--
Philippe.
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help