32 if (timer->callback(timer, timer->arg))
53 .timeout = target_val,
clocksource_t * active_clocksource
#define active_clocksource_ticks()
bool signal_has_pending(void)
Return true if there's a pending signal.
#define LIST_HEAD_INIT(container)
MOSAPI void list_node_append(list_node_t *head, list_node_t *item)
#define list_foreach(t, v, h)
Iterate over a list.
#define list_node(element)
Get the ‘list_node’ of a list element. This is exactly the reverse of ‘list_entry’ above.
list_node_t list_head
A linked list head.
MOSAPI bool list_is_empty(const list_node_t *head)
#define LIST_NODE_INIT(container)
#define list_remove(element)
void blocked_reschedule(void)
Mark the current task as blocked and reschedule.
void scheduler_wake_thread(thread_t *thread)
Wake a thread.
void reschedule(void)
reschedule.
#define spinlock_acquire(lock)
#define spinlock_release(lock)
long timer_msleep(u64 ms)
static spinlock_t timer_queue_lock
static bool timer_do_wakeup(ktimer_t *timer, void *arg)
static list_head timer_queue
list of timers that are waiting to be executed