Hello, I work together with Thomas Necker on a legacy pSOS project to get it ported to Xenomai. I have already ported a great amount of code and most of it works fine.
But we have a pSOS task which (sometimes) works in non-preemptive mode (T_NOPREEMPT). When this task calls ev_receive() it gets back the error code -EPERM from underlying xnpod_unblockable_p(). It seems to be not allowed in Xenomai to call a blockable syscall in non-preemptive mode. With original pSOS this was allowed and "non-preemptive" meant that a runnable task cannot be preempted by other tasks but can block itself. Why is this different in Xenomai and is it possible to implement the same behaviour in Xenomai core? Another problem is that we have a root task creating and starting some other tasks. The new tasks are mostly created with prio 80 and the root task wants to run the new tasks until their first blocking syscall. Therefore the root task lowers its priority to one less the priority of the new task, i.e. 79. Then the root task raise its prio back to 240. Immediately after lowering its prio, the root task should be preempted and the new task should run. But this doesn't happen. Why not? Thank you. Regards Markus _______________________________________________ Xenomai-core mailing list Xenomaifirstname.lastname@example.org https://mail.gna.org/listinfo/xenomai-core