os_task.h 1001 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 (*TskFunction_t)( void * );
  7. typedef struct shark_task {
  8. u64 time;
  9. struct shark_task *next;
  10. TskFunction_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. static inline bool shark_timer_started(shark_timer_t *timer)
  20. {
  21. return timer->next != timer;
  22. }
  23. static inline bool shark_timer_stopped(shark_timer_t *timer)
  24. {
  25. return timer->next == timer;
  26. }
  27. void os_enable_irq(void);
  28. void os_disable_irq(void);
  29. u64 shark_get_mseconds(void);
  30. u32 shark_get_seconds(void);
  31. void shark_timer_post(shark_timer_t *timer, u32 delay);
  32. void shark_timer_cancel(shark_timer_t *timer);
  33. void shark_task_add(shark_task_t *task);
  34. void shark_task_run(void);
  35. shark_task_t *shark_task_create(TskFunction_t, void *);