rt_task_unblock() POSIX alternative

Richard Weinberger richard.weinberger at gmail.com
Tue Apr 14 12:23:42 CEST 2020


On Tue, Apr 14, 2020 at 12:07 PM Jan Kiszka <jan.kiszka at siemens.com> wrote:
>
> On 14.04.20 11:46, Richard Weinberger wrote:
> > On Tue, Apr 14, 2020 at 11:11 AM Petr ńĆervenka <grugh at centrum.cz> wrote:
> >>
> >>> I fear there seems to be a confusion between POSIX tasks and POSIX skin.
> >>> Is your goal programming Xenomai realtime threads using POSIX alike APIs?
> >>> Or are you looking for a pedant of rt_task_unblock() to unblock a
> >>> POSIX task, without Xenomai realtime threads?
> >>>
> >>> The solution I provided is for the latter case.
> >>
> >>
> >>
> >> My original goal was to port a very complex realtime application from Xenomai 2.6.5 Native skin to Xenomai 3.1 POSIX skin. So I made series of examples, where I tried to verify porting of several designs used in the orig. application. And rt_task_unblock() for reconfiguration of the waiting threads in the orig app was one of them.
> >>
> >> Now I'm very curious, why the (my explicit) signals in Xenomai POSIX skin are not working for me as I would expect.
> >>
> >>
> >>
> >> Here is my compile command:
> >>
> >> g++ -fasynchronous-unwind-tables   -c -g -D_DEBUG -D_GNU_SOURCE -D_REENTRANT -D__COBALT_WRAP__ -D__COBALT__ -I/usr/xenomai/include/cobalt -I/usr/xenomai/include -MMD -MP -MF "build/Debug/GNU-Linux/main.o.d" -o build/Debug/GNU-Linux/main.o main.cpp
> >>
> >>
> >>
> >> Here is my link command:
> >>
> >> g++ -fasynchronous-unwind-tables    -o dist/Debug/GNU-Linux/countertestapp_4 build/Debug/GNU-Linux/main.o -L/usr/xenomai/lib -Wl,-rpath,'/usr/xenomai/lib' -Wl,--no-as-needed -Wl,@/usr/xenomai/lib/cobalt.wrappers -Wl,@/usr/xenomai/lib/modechk.wrappers /usr/xenomai/lib/xenomai/bootstrap.o -Wl,--wrap=main -Wl,--dynamic-list=/usr/xenomai/lib/dynlist.ld -lcobalt -lmodechk -lpthread -lrt
> >>
> >>
> >>
> >> I'm using Netbeans IDE for my attemps, but the I tried to integrate xeno-config --posix --cflags or --ldflags result into the project settings as much as possible.
> >
> > Okay. Now things get clearer.
> > pthread_kill() will be wrapped to Xenomai, but you installed a signal
> > handler for a Linux process.
> >
> > What you basically need is a function in the Xenomai POSIX skin which
> > calls threadobj_unblock().
> >
>
> Below the working version for unblocking the RT task with non-RT signal.

This interrupts the Linux syscall, yes. Does this also work when the
thread blocks on the Xenomai/Cobalt side?

-- 
Thanks,
//richard



More information about the Xenomai mailing list