![]() |
![]() |
![]() |
Set the expiration time for a timer
#include <sys/neutrino.h> int TimerSettime( timer_t id, int flags, const struct _itimer * itime, struct _itimer * oitime ); int TimerSettime_r( timer_t id, int flags, const struct _itimer * itime, struct _itimer * oitime );
libc
The TimerSettime() and TimerSettime_r() functions are identical except in the way they indicate errors. See the Returns section for details.
These kernel calls set the expiration time of the timer specified by id. The expiration is specified by the itime argument. The itime argument contains at least the following members:
Member | Description |
---|---|
uint64_t nsec | Expiration time to set |
uint64_t interval_nsec | Interval reload time |
If the nsec member of itime is zero, then the timer is disarmed.
If the interval_nsec member of itime is nonzero, then it specifies a repeat rate which is added to the timer once the nsec period has expired. Subsequently, the timer is automatically rearmed, causing it to become repetitive with a period of interval_nsec.
If the timer is already armed when TimerSettime() is called, this call discards the previous setting and sets a new setting.
If the flag TIMER_ABSTIME is set in flags, then the nsec represents an "absolute" expiration date in seconds and nanoseconds from 00:00:00 January 1, 1970 UTC. If the date specified has already passed, then the expiration event is delivered immediately.
If TIMER_ABSTIME isn't set in flags, then the nsec represents a "relative" expiration period that's offset from the current system time by the specified number of seconds and nanoseconds.
If the oitime argument isn't NULL, then upon return from this function it'll contain a value representing the previous amount of time left before the timer was to have expired, or zero if the timer was disarmed at the time of the call. The previous interval timer period is also stored in the interval_nsec member.
If the event notification specified by TimerCreate() has a sigev_code of SI_TIMER, then at most one event is queued. In this case, if an event is pending from a previous timer when the timer fires again, a timer overrun occurs. The TimerInfo() kernel call can be used to obtain the count of overruns that have occurred on this timer.
This call doesn't block.
The only difference between these functions is the way they indicate errors:
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
![]() |
![]() |
![]() |