#ifndef CX_ZIVUOS_STATE_H_INCLUDED #define CX_ZIVUOS_STATE_H_INCLUDED /** * @brief States of the task. * * That is current task state. It is used also to mark empty tasks * slots. Worker also uses that type to mark new state of the task. */ typedef enum zv_state_e { /* That state mark task slot as empty. */ ZV_TASK_EMPTY, /* That mean task is ready, and wait to be executed. */ ZV_TASK_READY, /* That mean task is now executed. */ ZV_TASK_RUNNING, /* * That mean task is waiting for any event. When any event * had been received, task state would be update to ZV_TASK_READY * by scheduler. */ ZV_TASK_EVENT_WAIT, /* * That mean task is waiting for timer event. System timers are * processed by scheduler, when target time had elapsed, scheduler * would update task state to ZV_TASK_READY. */ ZV_TASK_TIMER_WAIT, /* * That state could be used by worker. When worker return that state, * task would be killed. */ ZV_TASK_KILLED, } zv_state_t; /** * That would return true when task is supported by scheduler timer. */ #define __zv_state_is_timer(X) ( \ X == ZV_TASK_TIMER_WAIT \ ) #endif