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 "shell.h"
10#include "timer.h"
11#include "priority.h"
12#include "thread.h"
13#include "log.h"
14#include "config.h"
15#include "port.h"
16
17static uint16_t critical_nesting_count = (uint16_t)0u;
18static uint32_t critical_saved_primask = (uint32_t)0u;
19
24{
25 if (critical_nesting_count == 0u)
26 {
27 critical_saved_primask = port_get_primask();
28 port_disable_interrupts
29 }
30 critical_nesting_count++;
31}
32
37{
38 if (critical_nesting_count == 0u)
39 {
40 core_assert(0, "NESTING CRITICAL UNBALANCED");
41 return;
42 }
43
44 critical_nesting_count--;
45 if (critical_nesting_count == 0)
46 {
47 port_set_primask(critical_saved_primask);
48 }
49}
50
55{
56 akos_port_systick_init_freq(OS_CFG_SYSTICK_CLOCK_HZ);
60 akos_shell_feature_init();
62}
63
67void akos_core_run(void)
68{
70 port_setup_PendSV();
72}
Build-time configuration macros for AK-mOS.
void akos_core_run(void)
Start scheduler and switch to the first task.
Definition core.c:67
void akos_core_init(void)
Initialize kernel modules.
Definition core.c:54
void akos_core_exit_critical(void)
Exit nested critical section.
Definition core.c:36
void akos_core_enter_critical(void)
Enter nested critical section.
Definition core.c:23
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:43
void akos_port_systick_init_freq(uint32_t cpu_freq)
Initialize SysTick to generate 1ms OS ticks.
Definition port.c:26
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:455
void akos_thread_start(void)
Start scheduler state.
Definition thread.c:650
Software timer APIs.
void akos_timer_init(void)
Initialize timer module.
Definition timer.c:234