#ifndef CX_ZIVUOS_PROCESS_H_INCLUDED #define CX_ZIVUOS_PROCESS_H_INCLUDED #include "status.h" #include "models.h" typedef struct zv_process_s { struct zv_process_s *next; zv_pid_t pid; zv_status_t status; zv_universal_param_t param[1]; zv_worker_t worker; zv_updater_t updater[1]; #ifndef ZIVUOS_USE_STATIC bool is_dynamic; #endif } zv_process_t; zv_process_t * zv_process_create(); zv_process_t * zv_process_remove(zv_process_t *); static inline zv_pid_t zv_process_get_pid(zv_process_t *self) { return self->pid; } static inline void zv_process_set_worker( zv_process_t *self, zv_worker_t worker ) { self->worker = worker; } static inline void zv_process_set_updater( zv_process_t *self, zv_updater_t updater ) { *self->updater = updater; } static inline void zv_process_set_param( zv_process_t *self, zv_universal_param_t param ) { *self->param = param; } static inline void zv_process_set_status( zv_process_t *self, zv_status_t status ) { self->status = status; } static inline void zv_process_set_number_param( zv_process_t *self, intptr_t number ) { self->param->number = number; } static inline void zv_process_set_unumber_param( zv_process_t *self, uintptr_t unumber ) { self->param->unumber = unumber; } static inline void zv_process_set_pointer_param( zv_process_t *self, void *pointer ) { self->param->pointer = pointer; } static inline void zv_process_set_dynamic_updater( zv_process_t *self, zv_checker_t checker ) { self->updater->dynamic = checker; } static inline void zv_process_set_readiness( zv_process_t *self, zv_readiness_t readiness ) { self->updater->non_dynamic = readiness; } #endif