7 #ifndef ZRTOS_VHEAP_TASK_SCHEDULER_H 8 #define ZRTOS_VHEAP_TASK_SCHEDULER_H 31 return zrtos_vheap_task_scheduler.
heap;
35 zrtos_vheap_task_scheduler.
heap =
heap;
45 #pragma GCC push_options 46 #pragma GCC optimize ("O0") 51 #pragma GCC pop_options 137 #define ZRTOS_VHEAP_TASK_SCHEDULER__EACH_TASK_BEGIN(thiz,start_offset,pos,chunk,task)\ 138 ZRTOS_VHEAP__EACH_EX_BEGIN( \ 142 ,ZRTOS_VHEAP_TYPE__TASK_IDLE \ 145 zrtos_vheap_task_t *task = zrtos_types__ptr_subtract( \ 146 zrtos_types__ptr_add( \ 147 zrtos_vheap_chunk__get_ptr(chunk) \ 148 ,zrtos_vheap_chunk__get_length(chunk) \ 150 ,sizeof(zrtos_vheap_task_t) \ 154 #define ZRTOS_VHEAP_TASK_SCHEDULER__EACH_TASK_END \ 156 }ZRTOS_VHEAP__EACH_EX_END 204 #pragma GCC push_options 205 #pragma GCC optimize ("O0") 228 #pragma GCC pop_options 240 ,
void *(*callback)(
void *args)
243 void *ret = callback(args);
253 __builtin_unreachable();
#define ZRTOS_VHEAP_TASK_SCHEDULER__EACH_TASK_END
uint8_t zrtos_arch_stack_t
void * zrtos_types__ptr_subtract(void *ptr, size_t byte_len)
static void _zrtos_vheap_task_scheduler__restore_task(void)
void zrtos_vheap_task__set_errno(zrtos_vheap_task_t *thiz, zrtos_error_t errno)
#define ZRTOS_TYPES__MAX(a, b)
#define ZRTOS_DEBUG__CODE(code)
#define ZRTOS_ARCH__FATAL()
void _zrtos_vheap_task_scheduler__on_tick(void)
bool zrtos_vheap_task__is_idle(zrtos_vheap_task_t *thiz)
#define ZRTOS_ARCH__LOAD_CPU_STATE_EX(ptr)
bool zrtos_vheap_task_scheduler__has_enough_stack_space(zrtos_vheap_task_t *task, zrtos_vheap_chunk_t *chunk)
#define ZRTOS_ARCH__SET_STACK_PTR(ptr)
void zrtos_vheap_task__set_return_value(zrtos_vheap_task_t *thiz, void *return_value)
static void zrtos_vheap_task_scheduler__page_task_in(zrtos_vheap_chunk_t *chunk)
void zrtos_vheap_task__set_delay_ms(zrtos_vheap_task_t *thiz, zrtos_vheap_task_tick_type_t ms)
uint16_t ctx_switch_task_stack[100]
zrtos_vheap_chunk_t * zrtos_vheap__get_by_id(zrtos_vheap_t *thiz, zrtos_vheap_chunk_uid_t uid)
void zrtos_vheap_task__set_stack_ptr(zrtos_vheap_task_t *thiz, zrtos_arch_stack_t *stack_ptr)
#define ZRTOS_ARCH__RETURN_FROM_INTERRUPT()
#define ZRTOS_ARCH__SAVE_CPU_STATE_EX(ptr)
void zrtos_vheap_task_scheduler__set_heap(zrtos_vheap_t *heap)
zrtos_vheap_chunk_t * zrtos_vheap__get_by_type_ex(zrtos_vheap_t *thiz, zrtos_vheap_type_t type)
size_t zrtos_vheap_chunk__get_length(zrtos_vheap_chunk_t *thiz)
zrtos_vheap_chunk_uid_t zrtos_vheap_chunk__get_uid(zrtos_vheap_chunk_t *thiz)
#define ZRTOS_VHEAP_TASK_SCHEDULER__EACH_TASK_BEGIN(thiz, start_offset, pos, chunk, task)
#define ZRTOS_TYPES__GET_STATIC_ARRAY_LENGTH(arr)
void * zrtos_vheap__get_last_address(zrtos_vheap_t *thiz)
size_t zrtos_types__ptr_get_byte_distance(void *bigger, void *smaller)
bool zrtos_vheap_task_scheduler__start(void)
size_t zrtos_vheap_task__get_stack_size_min(zrtos_vheap_task_t *thiz)
void zrtos_vheap_task__on_tick(zrtos_vheap_task_t *thiz)
zrtos_error_t zrtos_vheap_task__get_errno(zrtos_vheap_task_t *thiz)
zrtos_arch_stack_t * tmp_stack_ptr
volatile zrtos_vheap_task_scheduler_t zrtos_vheap_task_scheduler
zrtos_arch_stack_t * zrtos_vheap_task__get_stack_ptr(zrtos_vheap_task_t *thiz)
void zrtos_vheap_chunk__set_type(zrtos_vheap_chunk_t *thiz, zrtos_vheap_type_t type)
zrtos_vheap_task_t * _zrtos_vheap_task_scheduler__get_active_task(void)
void * zrtos_vheap__page_in(zrtos_vheap_t *thiz, zrtos_vheap_chunk_t *chunk)
struct _zrtos_vheap_task_scheduler_t zrtos_vheap_task_scheduler_t
static bool _zrtos_vheap_task_scheduler__set_active_task(zrtos_vheap_chunk_uid_t uid)
size_t _zrtos_vheap__get_free_space_ex(zrtos_vheap_t *thiz, void *stack_ptr)
void zrtos_vheap_task_scheduler__delay_ms(zrtos_vheap_task_delay_t ms)
static void zrtos_vheap_task_scheduler__page_task_out(void)
void _zrtos_vheap_task_scheduler__switch_task(void)
zrtos_vheap_t * zrtos_vheap_task_scheduler__get_heap(void)
void zrtos_vheap_task_scheduler__trampoline_cb(zrtos_vheap_task_t *thiz, void *(*callback)(void *args), void *args)
void zrtos_vheap__page_out(zrtos_vheap_t *thiz, zrtos_vheap_chunk_t *chunk, size_t length)
uint16_t zrtos_vheap_task_delay_t