| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #ifndef ZIVUOS_PROCESS_H_INCLUDED
- #define ZIVUOS_PROCESS_H_INCLUDED
- #include "porttypes.h"
- #include "worker.h"
- #include "pipe.h"
- typedef enum zv_process_state_e {
- /* Process waiting for free processor time */
- WAITING,
-
- /* Process current executing by processor */
- RUNNING,
- /* Process waiting for IRQ (param) */
- IRQ_WAITING,
- /* Process waiting for new data in PIPE */
- PIPE_WAITING,
- /* Process waiting for ticks (param) */
- TIME_WAITING
- } zv_process_state_t;
- typedef union zv_process_param_u {
- /* Required for TIME_WAITING */
- zv_ticks_t time;
-
- /* Required for IRQ_WAITING */
- zv_irq_t irq;
- } zv_process_param_t;
- typedef struct zv_process_s {
- /* Current state of process */
- zv_process_state_t state;
- /* Pipe for processes communication */
- zv_pipe_t pipe;
- /* Priority of process (lower number -> higher priority) */
- zv_uint_t priority;
-
- /* Param for the process */
- zv_process_param_t param;
- /* Worker of the process */
- zv_worker_t worker;
- } zv_process_t;
- #ifdef USING_NAMESPACE_ZV
- typedef zv_process_t process_t;
- typedef zv_process_param_t process_param_t;
- typedef zv_process_state_t process_state_t;
- #endif
- #endif
|