process.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #ifndef ZIVUOS_PROCESS_H_INCLUDED
  2. #define ZIVUOS_PROCESS_H_INCLUDED
  3. #include "porttypes.h"
  4. #include "worker.h"
  5. #include "pipe.h"
  6. typedef enum zv_process_state_e {
  7. /* Process waiting for free processor time */
  8. WAITING,
  9. /* Process current executing by processor */
  10. RUNNING,
  11. /* Process waiting for IRQ (param) */
  12. IRQ_WAITING,
  13. /* Process waiting for new data in PIPE */
  14. PIPE_WAITING,
  15. /* Process waiting for ticks (param) */
  16. TIME_WAITING
  17. } zv_process_state_t;
  18. typedef union zv_process_param_u {
  19. /* Required for TIME_WAITING */
  20. zv_ticks_t time;
  21. /* Required for IRQ_WAITING */
  22. zv_irq_t irq;
  23. } zv_process_param_t;
  24. typedef struct zv_process_s {
  25. /* Current state of process */
  26. zv_process_state_t state;
  27. /* Pipe for processes communication */
  28. zv_pipe_t pipe;
  29. /* Priority of process (lower number -> higher priority) */
  30. zv_uint_t priority;
  31. /* Param for the process */
  32. zv_process_param_t param;
  33. /* Worker of the process */
  34. zv_worker_t worker;
  35. } zv_process_t;
  36. #ifdef USING_NAMESPACE_ZV
  37. typedef zv_process_t process_t;
  38. typedef zv_process_param_t process_param_t;
  39. typedef zv_process_state_t process_state_t;
  40. #endif
  41. #endif