Jan Kiszka wrote:
> Gilles Chanteperdrix wrote:
> > Jan Kiszka wrote:
> > > Hi Gilles,
> > >
> > > don't know yet what's going wrong, but the following demo code doesn't
> > > compile against the POSIX skin due to unresolved SIG_BLOCK:
> > >
> > > #include <pthread.h>
> > > #include <signal.h>
> > >
> > > int main()
> > > {
> > > return SIG_BLOCK;
> > > }
> > >
> > > Comment out the pthread include, and it will work again. Any ideas?
> >
> > Fixed in revision 714
> >
>
> Yep, thanks.
>
> I found this while trying Thomas Gleixner's cyclic test over the POSIX
> skin (http://www.tglx.de/projects/misc/cyclictest). After fixing a
> rather ugly bug in his code (missing mlockall) I ran into a yet unknown
> issue with the POSIX skin: the code just hangs when wrapped to Xenomai.
>
> Compilation:
> gcc -o cyclictest cyclictest.c <posix-cflags> <posix-ldflags>
>
> Invocation:
> cyclictest -n -p 99
>
> Maybe its just real-time starvation (but the watchdog doesn't trigger,
> and I do not see why it should starve), maybe its a crash (will try to
> attach a serial console later). Anyway, it's an easy test case (and also
> a nice tool), so you may want to have a look as well.
A second, better guess: the created thread is not a Xenomai realtime
thread, so never suspends (Xenomai calls return EPERM when not called
from a real-time thread) and hangs. Replacing sched_setscheduler with
pthread_setschedparam should solve this issue.
I would not be surprised if, with NPTL, sched_setscheduler had an effect
on the whole process, i.e. set the priority of all the threads in the
process.
--
Gilles Chanteperdrix.
_______________________________________________
Xenomai-core mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-core