task.h 652 B

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include "libs/os.h"
  3. typedef u32 (*task_func)(void);
  4. typedef struct _task {
  5. u64 time;
  6. struct _task *next;
  7. u32 (*handler)(void);
  8. } task_t;
  9. typedef struct _timer {
  10. void (*handler)(struct _timer *timer);
  11. struct _timer *prev;
  12. struct _timer *next;
  13. u64 time;
  14. } timer_t;
  15. #define MAX_TASK 8
  16. #define TIMER_INIT(timer, handler) { handler, &timer, &timer }
  17. u64 get_mseconds(void);
  18. u32 get_seconds(void);
  19. void timer_post(timer_t *timer, u32 delay);
  20. void timer_cancel(timer_t *timer);
  21. void task_add(task_t *task);
  22. void task_run(void);
  23. void task_udelay(u32 delay);
  24. u32 task_ticks_abs(void);
  25. task_t *task_start(task_func func, u32 delay);