Go to the documentation of this file.
74 return (
bool)(dlhp == dlhp->
next);
87 return (
bool)(dlp->
next == dlhp);
100 return (
bool)(dlhp->
next == dlp);
113 return (
bool)(dlp != dlhp);
173 while (dlp->
delta < delta) {
175 chDbgAssert(dlp != dlep,
"element already in list");
224 #if (CH_CFG_ST_TIMEDELTA > 0) || defined(__DOXYGEN__)
240 if (delay < currdelta) {
245 #if CH_CFG_INTERVALS_SIZE > CH_CFG_ST_RESOLUTION
269 if (nowdelta < delay) {
304 if (delay < currdelta) {
309 #if CH_CFG_INTERVALS_SIZE > CH_CFG_ST_RESOLUTION
340 port_timer_set_alarm(
chTimeAddX(now, currdelta));
355 #if CH_CFG_ST_TIMEDELTA > 0
371 delta = nowdelta + delay;
376 if (delta < nowdelta) {
382 if (delta < vtlp->dlist.next->delta) {
409 #if CH_CFG_ST_TIMEDELTA == 0
468 #if CH_CFG_ST_TIMEDELTA == 0
509 port_timer_stop_alarm();
555 if (dlp == &vtp->
dlist) {
556 #if CH_CFG_ST_TIMEDELTA > 0
559 if (nowdelta > delta) {
562 return delta - nowdelta;
568 }
while (dlp != &vtlp->
dlist);
589 #if CH_CFG_ST_TIMEDELTA == 0
634 if (nowdelta < vtp->dlist.delta) {
650 port_timer_stop_alarm();
void chVTDoTickI(void)
Virtual timers ticker.
static delta_list_t * vt_remove_first(delta_list_t *dlhp)
Dequeues an element from the delta list.
static systime_t chVTGetSystemTimeX(void)
Current system time.
static delta_list_t * vt_dequeue(delta_list_t *dlp)
Dequeues an element from the delta list.
static bool chVTIsArmedI(const virtual_timer_t *vtp)
Returns true if the specified timer is armed.
static void vt_insert_after(delta_list_t *dlhp, delta_list_t *dlp, sysinterval_t delta)
Inserts an element after another header element.
uint64_t systime_t
Type of system time.
static void vt_insert(delta_list_t *dlhp, delta_list_t *dlep, sysinterval_t delta)
Inserts an element in a delta list.
#define chDbgAssert(c, r)
Condition assertion.
static void vt_set_alarm(systime_t now, sysinterval_t delay)
Alarm time setup.
virtual_timers_list_t vtlist
Virtual timers delta list header.
delta_list_t dlist
Delta list element.
static sysinterval_t chTimeDiffX(systime_t start, systime_t end)
Subtracts two system times returning an interval.
sysinterval_t chVTGetRemainingIntervalI(virtual_timer_t *vtp)
Returns the remaining time interval before next timer trigger.
static bool vt_is_last(delta_list_t *dlhp, delta_list_t *dlp)
Last timer in the list check.
vtfunc_t func
Timer callback function pointer.
#define chDbgCheck(c)
Function parameters check.
#define TIME_IMMEDIATE
Zero interval specification for some functions with a timeout specification.
static systime_t chTimeAddX(systime_t systime, sysinterval_t interval)
Adds an interval to a system time returning a system time.
void _vt_init(void)
Virtual Timers initialization.
volatile systime_t systime
System Time counter.
sysinterval_t delta
Time delta before timeout.
delta_list_t * prev
Previous timer in the list.
static void vt_init(delta_list_t *dlhp)
Delta list initialization.
static void chSysLockFromISR(void)
Enters the kernel lock state from within an interrupt handler.
delta_list_t dlist
Delta list header.
static void vt_enqueue(virtual_timers_list_t *vtlp, virtual_timer_t *vtp, sysinterval_t delay)
Enqueues a virtual timer in a virtual timers list.
void chDbgCheckClassI(void)
I-class functions context check.
Structure representing a Virtual Timer.
ch_system_t ch
System data structures.
uint64_t sysinterval_t
Type of time interval.
#define TIME_MAX_SYSTIME
Maximum system of system time before it wraps.
void chVTDoResetI(virtual_timer_t *vtp)
Disables a Virtual Timer.
systime_t lasttime
System time of the last tick event.
Structure representing a virtual timers list header.
ChibiOS/RT main include file.
static void vt_insert_first(virtual_timers_list_t *vtlp, virtual_timer_t *vtp, systime_t now, sysinterval_t delay)
Inserts a timer as first element in a delta list.
void chVTDoSetI(virtual_timer_t *vtp, sysinterval_t delay, vtfunc_t vtfunc, void *par)
Enables a one-shot virtual timer.
static bool vt_is_timer(delta_list_t *dlhp, delta_list_t *dlp)
Timer check.
static void vt_insert_before(delta_list_t *dlhp, delta_list_t *dlp, sysinterval_t delta)
Inserts an element before another header element.
void(* vtfunc_t)(void *p)
Type of a Virtual Timer callback function.
#define CH_CFG_ST_TIMEDELTA
Time delta constant for the tick-less mode.
static bool vt_is_empty(delta_list_t *dlhp)
List empty check.
void * par
Timer callback function parameter.
delta_list_t * next
Next timer in the list.
static bool vt_is_first(delta_list_t *dlhp, delta_list_t *dlp)
Fist timer in the list check.
Virtual Timer delta list element and header structure.
static void chSysUnlockFromISR(void)
Leaves the kernel lock state from within an interrupt handler.