state.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef CX_ZIVUOS_STATE_H_INCLUDED
  2. #define CX_ZIVUOS_STATE_H_INCLUDED
  3. /**
  4. * @brief States of the task.
  5. *
  6. * That is current task state. It is used also to mark empty tasks
  7. * slots. Worker also uses that type to mark new state of the task.
  8. */
  9. typedef enum zv_state_e {
  10. /* That state mark task slot as empty. */
  11. ZV_TASK_EMPTY,
  12. /* That mean task is ready, and wait to be executed. */
  13. ZV_TASK_READY,
  14. /* That mean task is now executed. */
  15. ZV_TASK_RUNNING,
  16. /*
  17. * That mean task is waiting for any event. When any event
  18. * had been received, task state would be update to ZV_TASK_READY
  19. * by scheduler.
  20. */
  21. ZV_TASK_EVENT_WAIT,
  22. /*
  23. * That mean task is waiting for timer event. System timers are
  24. * processed by scheduler, when target time had elapsed, scheduler
  25. * would update task state to ZV_TASK_READY.
  26. */
  27. ZV_TASK_TIMER_WAIT,
  28. /*
  29. * That state could be used by worker. When worker return that state,
  30. * task would be killed.
  31. */
  32. ZV_TASK_KILLED,
  33. } zv_state_t;
  34. /**
  35. * That would return true when task is supported by scheduler timer.
  36. */
  37. #define __zv_state_is_timer(X) ( \
  38. X == ZV_TASK_TIMER_WAIT \
  39. )
  40. #endif