| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef CX_ZIVUOS_KERNEL_H_INCLUDED
- #define CX_ZIVUOS_KERNEL_H_INCLUDED
- #include <stdint.h>
- #include <stdbool.h>
- #include "zv_types.h"
- #include "task.h"
- #define ZV_COUNT_TASKS(X) (sizeof(X) / sizeof(zv_task_t))
- typedef enum zv_scheduler_mode_e {
- ZV_SCHEDULER_BASIC,
- ZV_SCHEDULER_PRIORITY_STRICT,
- ZV_SCHEDULER_PRIORITY_AGING,
- } zv_scheduler_mode_t;
- typedef struct zv_kernel_s {
- zv_scheduler_mode_t scheduler;
- zv_task_t *tasks;
- zv_tid_t tasks_count;
- } zv_kernel_t;
- bool zv_kernel_init(zv_kernel_t *self, zv_task_t *tasks, zv_tid_t count);
- bool zv_kernel_boot(zv_kernel_t *self);
- zv_tid_t zv_kernel_create_process(
- zv_kernel_t *self,
- zv_worker_t worker,
- zv_priority_t priority,
- void *param
- );
- bool zv_kernel_kill_process(
- zv_kernel_t *self,
- zv_tid_t target
- );
- zv_tid_t __zv_kernel_get_empty_slot(zv_kernel_t *self);
- zv_task_t * __zv_kernel_get_task(zv_kernel_t *self, zv_tid_t target);
- zv_tid_t __zv_kernel_get_tid(zv_kernel_t *self, zv_task_t *target);
- #endif
|