On 07/23/2015 10:07 AM, Giorgio Buffa wrote:
> Hello list!
> I have to write a Xenomai 2.6.4 thread that is activated upon the
> expiration of a (periodic) timer. It is not clear to me how to do that
> without switching to secondary mode.
> 
> I would like to stick with the POSIX skin but, in my understanding, with
> the POSIX skin, using the `timer_create()` and `timer_settime()` I will
> switch to secondary mode on timer expiration, because a signal is
> generated by that event. Is it correct?
> 

Yes, as far as Xenomai 2.x is concerned, the thread receiving the wake
up (linux) signal will be switched to secondary mode. Support for rt
signals appeared in 3.x, delivered to sigwait*() or via the timerfd API.

> On the other hand, the switching to secondary mode does not happens
> using the Native Xenomai API, i.e. `rt_alarm_create()` and
> `rt_alarm_start()`. Am I wrong?
> 

No, that is correct. There is an internal server thread waiting for
pending alarms in primary mode.

> What are the options available for that purpose? Should I use the
> `pthread_make_periodic_np()` instead?

Yes, if you need periodic timing with automatic reporting of overruns
via the POSIXish API of Xenomai 2.x. Or clock_nanosleep() with absolute
timing on CLOCK_MONOTONIC if you intend to detect overruns by yourself.

 What are the differences wrt
> `timer_*` calls?
> 

async vs sync delivery, non-rt vs rt on the wake up side. The existing
documentation about the services should help:
http://www.xenomai.org/documentation/xenomai-2.6/html/api/group__posix.html

-- 
Philippe.

_______________________________________________
Xenomai mailing list
[email protected]
http://xenomai.org/mailman/listinfo/xenomai

Reply via email to