Dear all,
My name is Paolo and i am brand new to Xenomai :-)
I downloaded and installed the stable version of Xenomai, 2.0.1. I tried
a few demos, and some POSIX skin examples: they work just fine :-). Then
and I started reading the documentation and some code (I have to say it
is very well done). Sorry if my first questions will be a little bit
simple and obvious.
I have a first question related to Xenomai Threads priorities and
scheduling. In particular I refer to the "Common priority scheme" in the
"Life with Adeos" document. What I understood is the following:
- Xenomai threads have a priority value that is compatible (let's say
transparent) between the primary and secondary domain.
- Xenomai threads in secondary mode and Linux real time threads (let's
say those with SCHED_FIFO or SCHED_RR policy) have compatible priority
values.
- Among the pool of ready Xenomai threads, the Xenomai thread with
highest priority is scheduled first.
- If the selected xenomai thread is in secondary mode and there is a
Linux thread with higher priority, the Linux thread is scheduled first.
First example:
---------------------
Suppose that at a rescheduling we have the following thread in the ready
queues
- High Priority -> Linux thread H
- Medium Priority -> Xenomai thread M in PRIMARY domain
- Low Priority -> Xenomai thread L in primary domain
Then, the Xenomai scheduler will select M, and M will be dispatched.
Second example:
--------------------------
- High Priority -> Linux thread H
- Medium Priority -> Xenomai thread M in SECONDARY domain
- Low Priority -> Xenomai thread L in primary domain
Then, the Xenomai scheduler will select M. but M is in secondary mode,
which means the Linux kernel will be scheduled. The Linux scheduler
knows H (it's a linux thread), M (it's in secondary mode), and maybe
about L (if it has been created by UVMs). The Linux scheduler will
choose H, and H will be scheduled.
Is that right?
bye
Paolo Gai
http://www.evidence.eu.com