.TH TIMER 9
.SH NAME
Timer, timeradd, timerdel \- clock scheduling procedures
.SH SYNOPSIS
.ta \w'\fLstruct 'u
.EX
enum {
/* Timer modes */
Trelative, /* Timer programmed in ns from now */
Tabsolute, /* Timer programmed in ns since epoch */
Tperiodic, /* Periodic timer, period in ns */
};
.EE
.PP
.EX
struct Timer
{
int tmode; /* See above */
void tns; /* Meaning defined by mode */
void (*tf)(Ureg *, Timer *);
void *ta;
};
.EE
.PP
.B
void timeradd(Timer *nt);
.PP
.B
void timerdel(Timer *dt);
.SH DESCRIPTION
Timer functions are used to set functions which execute at the specified
time. These functions are executed at the granularity of the system's
timer interrupt.
.I timeradd (9)
adds or modifies a timer
.I nt .
.I timerdel (9)
deletes a timer
.I dt .
Timers are guaranteed to not execute before the set time period. Periodic
timers should use the
.I addclock0link (9)
interface. Relative and absolute timers are triggered only once; after
execution, these timers are deleted.
.SH BUGS
When adding an absolute timer with
.I timeradd (9),
there is no check that the timer is set for a time in the past. This
effectively guarantees all absolute timers to execute.
.SH SOURCE
.B /sys/src/9/port/portclock.c
.br
.SH SEE ALSO
.IR delay (9),
.IR seconds (9),
.IR sleep (9)
|