os_task.h 815 B

12345678910111213141516171819202122232425262728293031323334
  1. #pragma once
  2. #include "os/os_types.h"
  3. #include "bsp/delay.h"
  4. #define MAX_TASK 32
  5. #define TIMER_INIT(timer, handler) {&timer, &timer, handler}
  6. typedef uint32_t (*TimerFunction_t)( void * );
  7. typedef struct shark_task {
  8. u64 time;
  9. struct shark_task *next;
  10. TimerFunction_t handler;
  11. void *params;
  12. } shark_task_t;
  13. typedef struct shark_timer {
  14. struct shark_timer *prev;
  15. struct shark_timer *next;
  16. void (*handler)(struct shark_timer *timer);
  17. u64 time;
  18. } shark_timer_t;
  19. void os_enable_irq(void);
  20. void os_disable_irq(void);
  21. u64 shark_get_mseconds(void);
  22. u32 shark_get_seconds(void);
  23. void shark_timer_post(shark_timer_t *timer, u32 delay);
  24. void shark_timer_cancel(shark_timer_t *timer);
  25. void shark_task_add(shark_task_t *task);
  26. void shark_task_run(void);
  27. shark_task_t *shark_task_create(TimerFunction_t, void *);