I am working on using SIGWINCH to trigger priority changes in
user-space. And I am afraid it will never really work:
- Xenomai makes a difference between the base priority of a thread and
its current priority. But pthread_getschedparam should return the base
priority, not the current priority, so, we need a way to change the
current priority of a thread without changing its base priority.
- I do not know at what time we should trigger a signal to the thread
whose priority is changing:
. if we send it as soon as we return to user-space (at the same time
as when we handle LO_RENICE_REQ), if the thread whose priority is
changing is not the current one, we potentially trigger a
primary/secondary mode transition for this thread;
. if we wait for the target thread to return to secondary mode (via
xnshadow_relax), any other thread in the same process which would read
the target thread priority with pthread_getschedparam would not see that
the priority has changed;
. we could do it as soon as a thread of the same process returns to
secondary mode, but it looks complicated, and besides,
pthread_getschedparam can safely be called from primary mode, so we
still have the same issue as for the previous point.
This is where I stopped thinking about this idea.
Thanks in advance for any help.
Xenomai-core mailing list