AKOS  v1.0.0
Documentation
Loading...
Searching...
No Matches
core.c
Go to the documentation of this file.
1
5
6#include "core.h"
7
8#include "message.h"
9#include "timer.h"
10#include "priority.h"
11#include "thread.h"
12#include "log.h"
13#include "config.h"
14#include "port.h"
15
16static uint16_t critical_nesting_count = (uint16_t)0u;
17
22{
23 port_disable_interrupts
24 critical_nesting_count++;
25}
26
31{
32 core_assert(critical_nesting_count, "NESTING CRITICAL UNBALANCED");
33 critical_nesting_count--;
34 if (critical_nesting_count == 0)
35 {
36 port_enable_interrupts
37 }
38}
39
51
55void akos_core_run(void)
56{
58 port_setup_PendSV();
60}
Build-time configuration macros for AK-mOS.
void akos_core_run(void)
Start scheduler and switch to the first task.
Definition core.c:55
void akos_core_init(void)
Initialize kernel modules.
Definition core.c:43
void akos_core_exit_critical(void)
Exit nested critical section.
Definition core.c:30
void akos_core_enter_critical(void)
Enter nested critical section.
Definition core.c:21
Kernel control and critical-section API.
void akos_port_start_first_task(void)
Start the first thread by restoring the initial exception context.
Definition port.c:42
void akos_port_systick_init_freq(uint32_t cpu_freq)
Initialize SysTick to generate 1ms OS ticks.
Definition port.c:25
Logging and assertion macro definitions.
Message object and message queue APIs.
void akos_message_init(void)
Initialize global message pool.
Definition message.c:53
Priority bitmap scheduler helpers.
void akos_priority_init(void)
Initialize priority table.
Definition priority.c:20
Thread scheduling and thread messaging APIs.
void akos_thread_register_static_threads(void)
Create all statically defined threads and kernel internal threads.
Definition thread.c:402
void akos_thread_start(void)
Start scheduler state.
Definition thread.c:555
Software timer APIs.
void akos_timer_init(void)
Initialize timer module.
Definition timer.c:234