summaryrefslogtreecommitdiffstats
path: root/src/task.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/task.h')
-rw-r--r--src/task.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/task.h b/src/task.h
index 4c00207..91bacc0 100644
--- a/src/task.h
+++ b/src/task.h
@@ -34,9 +34,10 @@
#include "pqueue.h"
+/** A scheduled task */
struct fastd_task {
- fastd_pqueue_t entry;
- fastd_task_type_t type;
+ fastd_pqueue_t entry; /**< Task queue entry */
+ fastd_task_type_t type; /**< Type of the task */
};
@@ -45,18 +46,22 @@ void fastd_task_handle(void);
void fastd_task_reschedule(fastd_task_t *task, fastd_timeout_t timeout);
+/** Checks if the given task is currently scheduled */
static inline bool fastd_task_scheduled(fastd_task_t *task) {
return fastd_pqueue_linked(&task->entry);
}
+/** Removes a task from the queue */
static inline void fastd_task_unschedule(fastd_task_t *task) {
fastd_pqueue_remove(&task->entry);
}
+/** Puts a task back into the queue with a new timeout relative to the old one */
static inline void fastd_task_reschedule_relative(fastd_task_t *task, int64_t delay) {
fastd_task_reschedule(task, task->entry.value + delay);
}
+/** Schedules a task with given type and timeout */
static inline void fastd_task_schedule(fastd_task_t *task, fastd_task_type_t type, fastd_timeout_t timeout) {
task->type = type;
fastd_task_reschedule(task, timeout);