task.h 926 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #ifndef CX_ZIVUOS_TASK_H_INCLUDED
  2. #define CX_ZIVUOS_TASK_H_INCLUDED
  3. #include "systypes.h"
  4. typedef enum zv_task_type_e {
  5. ZV_COROUTINE_TASK,
  6. ZV_PROCESS_TASK,
  7. ZV_ONESHOT_TASK
  8. } zv_task_type_t;
  9. typedef enum zv_state_e {
  10. ZV_KILLED,
  11. ZV_RUNNING,
  12. ZV_READY,
  13. ZV_SLEEP
  14. } zv_state_t;
  15. struct zv_kernel_s;
  16. typedef zv_state_t (*zv_worker_t) (struct zv_kernel_t *, zv_pid_t);
  17. typedef struct zv_coroutine_s {
  18. zv_worker_t worker;
  19. zv_universal_t param;
  20. } zv_coroutine_t;
  21. typedef struct zv_process_s {
  22. } zv_process_t;
  23. typedef struct zv_oneshot_s {
  24. zv_worker_t worker;
  25. zv_universal_t param;
  26. } zv_oneshot_t;
  27. typedef union zv_task_selector_u {
  28. zv_coroutine_t coroutine;
  29. zv_process_t process;
  30. zv_oneshot_t oneshot;
  31. } zv_task_selector_t;
  32. typedef struct zv_task_s {
  33. zv_pid_t pid;
  34. zv_state_t state;
  35. zv_priority_t priority;
  36. zv_task_type_t type;
  37. } zv_task_t;
  38. #endif