#ifndef CX_ZIVUOS_TASK_H_INCLUDED #define CX_ZIVUOS_TASK_H_INCLUDED #include "systypes.h" typedef enum zv_task_type_e { ZV_COROUTINE_TASK, ZV_PROCESS_TASK, ZV_ONESHOT_TASK } zv_task_type_t; typedef enum zv_state_e { ZV_KILLED, ZV_RUNNING, ZV_READY, ZV_SLEEP } zv_state_t; struct zv_kernel_s; typedef zv_state_t (*zv_worker_t) (struct zv_kernel_t *, zv_pid_t); typedef struct zv_coroutine_s { zv_worker_t worker; zv_universal_t param; } zv_coroutine_t; typedef struct zv_process_s { } zv_process_t; typedef struct zv_oneshot_s { zv_worker_t worker; zv_universal_t param; } zv_oneshot_t; typedef union zv_task_selector_u { zv_coroutine_t coroutine; zv_process_t process; zv_oneshot_t oneshot; } zv_task_selector_t; typedef struct zv_task_s { zv_pid_t pid; zv_state_t state; zv_priority_t priority; zv_task_type_t type; } zv_task_t; #endif