This commit is contained in:
2026-05-19 11:49:22 +08:00
commit add7af4222
96 changed files with 8635 additions and 0 deletions
+50
View File
@@ -0,0 +1,50 @@
#include <os_idle.h>
#include "os_align.h"
#include "os_critical.h"
os_task_t g_os_idle_task;
#ifndef OS_CFG_IDLE_TASK_STACK_SIZE
#define OS_CFG_IDLE_TASK_STACK_SIZE 1024
#endif /* OS_CFG_IDLE_TASK_STACK_SIZE */
#ifndef OS_CFG_IDLE_TASK_TICKS
#define OS_CFG_IDLE_TASK_TICKS 5
#endif /* OS_CFG_IDLE_TASK_TICKS */
#ifndef OS_CFG_IDLE_TASK_PRIORITY
#define OS_CFG_IDLE_TASK_PRIORITY OS_PRIORITY_IDLE
#endif /* OS_CFG_IDLE_TASK_PRIORITY */
OS_ALIGNED(OS_ALIGN_SIZE)
static uint8_t s_os_idle_stack[OS_CFG_IDLE_TASK_STACK_SIZE];
static volatile os_idle_entry_t s_os_idle_entry;
static volatile void* s_os_idle_entry_param;
static OS_NORETURN void os_idle_entry(void* p){
while(1){
if(s_os_idle_entry){
s_os_idle_entry((void*)s_os_idle_entry_param);
}
}
}
void os_idle_init(void){
os_task_init(&g_os_idle_task, os_idle_entry, 0
, s_os_idle_stack, OS_ARRAY_SIZE(s_os_idle_stack)
, OS_CFG_IDLE_TASK_TICKS, OS_CFG_IDLE_TASK_PRIORITY);
}
os_idle_closure_t os_idle_register(os_idle_entry_t entry, void* param){
os_idle_closure_t closure;
os_critical_enter();
closure.entry = s_os_idle_entry;
closure.param = (void*)s_os_idle_entry_param;
s_os_idle_entry = entry;
s_os_idle_entry_param = param;
os_critical_leave();
return closure;
}