17static uint16_t critical_nesting_count = (uint16_t)0u;
18static uint32_t critical_saved_primask = (uint32_t)0u;
25 if (critical_nesting_count == 0u)
27 critical_saved_primask = port_get_primask();
28 port_disable_interrupts
30 critical_nesting_count++;
38 if (critical_nesting_count == 0u)
40 core_assert(0,
"NESTING CRITICAL UNBALANCED");
44 critical_nesting_count--;
45 if (critical_nesting_count == 0)
47 port_set_primask(critical_saved_primask);
60 akos_shell_feature_init();
Build-time configuration macros for AK-mOS.
void akos_core_run(void)
Start scheduler and switch to the first task.
void akos_core_init(void)
Initialize kernel modules.
void akos_core_exit_critical(void)
Exit nested critical section.
void akos_core_enter_critical(void)
Enter nested critical section.
Kernel control and critical-section API.
void akos_port_start_first_task(void)
Start the first thread by restoring the initial exception context.
void akos_port_systick_init_freq(uint32_t cpu_freq)
Initialize SysTick to generate 1ms OS ticks.
Logging and assertion macro definitions.
Message object and message queue APIs.
void akos_message_init(void)
Initialize global message pool.
Priority bitmap scheduler helpers.
void akos_priority_init(void)
Initialize priority table.
Thread scheduling and thread messaging APIs.
void akos_thread_register_static_threads(void)
Create all statically defined threads and kernel internal threads.
void akos_thread_start(void)
Start scheduler state.
void akos_timer_init(void)
Initialize timer module.