task.h 589 B

1234567891011121314151617181920212223242526272829
  1. #pragma once
  2. #include "libs/types.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. u64 time;
  11. struct _timer *prev;
  12. struct _timer *next;
  13. void (*handler)(struct _timer *timer);
  14. } timer_t;
  15. #define MAX_TASK 8
  16. u64 get_mseconds(void);
  17. u32 get_seconds(void);
  18. void timer_post(timer_t *timer, u32 delay);
  19. void timer_cancel(timer_t *timer);
  20. void task_add(task_t *task);
  21. void task_run(void);
  22. void task_udelay(u32 delay);
  23. u32 task_ticks_abs(void);
  24. task_t *task_start(task_func func, u32 delay);