On 04/26/2013 05:22 PM, Tom Z wrote:
Hi All,
Can someone please tell me where I can find the documentation regarding the
task status transition (is there a state machine describing that)?
see include/nucleus/thread.h. Roughly, the main transitions are:
XNDORMANT ---(task_start)--> XNREADY ---(scheduled in)--> [running]
[running] ---(preemption)--> XNREADY
--(task_delete)--> XNZOMBIE --> [flushed]
--(task_suspend)--> XNSUSP --(scheduled out)->
--(wait on synchronization)--> XNPEND --(scheduled out)->
--(timed wait)--> XNDELAY --(scheduled out)->
XNSUSP, XNPEND and XNDELAY are cumulative. Waiting on a synchronization
object with a timeout leads to XNPEND | XNDELAY, otherwise XNPEND only.
Sleeping on a mere timeout only involves XNDELAY in the status.
Also, how the status values are defined? By reading
rt_task_info::status during program execution, I can get some values.
For example, while a task is running, I got a decimal of 3146112 for the
task's rt_task_info::status. It seems this value is OR'ed with some
macros, but what values are used to produce this status value? Where are
they defined?
check include/native/task.h, T_* bits for the native API. Most of them
are aliases to the XN* bits discussed above. 3146112 (0x300180), would
mean XNOTHER|XNUSER|XNMAPPED|XNSTARTED, which tags a non real-time
userland task shadowed by a Xenomai control block, basically meaning
that it may pend on real-time resources (sema4s, queues, condvars,
mutexes, etc), but won't contend for the CPU with real-time (i.e.
non-zero priority) Xenomai tasks.
Thanks,
Tom
_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai
--
Philippe.
_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai