ICARUS OS (Intelligent Cooperative Architecture for Real-time Unified Systems) 0.1.0
Preemptive Real-Time Operating System for ARM Cortex-M7
Loading...
Searching...
No Matches
scheduler.h
Go to the documentation of this file.
1
16#ifndef ICARUS_SCHEDULER_H
17#define ICARUS_SCHEDULER_H
18
19#ifdef __cplusplus
20extern "C" {
21#endif
22
23#include <stdint.h>
24#include "icarus/types.h"
25
26/* ============================================================================
27 * TASK SCHEDULING
28 * ========================================================================= */
29
34void os_yield(void);
35
42uint32_t task_active_sleep(uint32_t ticks);
43
50uint32_t task_blocking_sleep(uint32_t ticks);
51
57uint32_t task_busy_wait(uint32_t ticks);
58
59/* ============================================================================
60 * TASK INFORMATION
61 * ========================================================================= */
62
68uint32_t os_get_tick_count(void);
69
74uint8_t os_get_running_task_count(void);
75
80const char* os_get_current_task_name(void);
81
86uint32_t os_get_task_ticks_remaining(void);
87
94const char* os_get_task_name(uint8_t task_idx);
95
101uint8_t os_get_num_created_tasks(void);
102
108uint8_t os_is_running(void);
109
116icarus_task_state_t os_get_task_state(uint8_t task_idx);
117
123uint32_t os_get_task_dispatch_count(uint8_t task_idx);
124
132uint32_t os_get_stack_watermark(uint8_t task_idx);
133
139void os_update_stack_watermark(uint8_t task_idx);
140
141/* ============================================================================
142 * PRIVILEGED IMPLEMENTATIONS (Internal - Do Not Call Directly)
143 * ========================================================================= */
144
145void __os_yield(void);
146uint32_t __task_active_sleep(uint32_t ticks);
147uint32_t __task_blocking_sleep(uint32_t ticks);
148uint32_t __task_busy_wait(uint32_t ticks);
149uint32_t __os_get_tick_count(void);
150uint8_t __os_get_running_task_count(void);
151const char* __os_get_current_task_name(void);
152uint32_t __os_get_task_ticks_remaining(void);
153const char* __os_get_task_name(uint8_t task_idx);
154uint8_t __os_get_num_created_tasks(void);
155uint8_t __os_is_running(void);
157uint32_t __os_get_task_dispatch_count(uint8_t task_idx);
158uint32_t __os_get_stack_watermark(uint8_t task_idx);
159void __os_update_stack_watermark(uint8_t task_idx);
160
161#ifdef __cplusplus
162}
163#endif
164
165#endif /* ICARUS_SCHEDULER_H */
void os_yield(void)
Voluntarily yield CPU to scheduler.
Definition svc.c:511
uint32_t __os_get_tick_count(void)
Privileged implementation of os_get_tick_count.
Definition scheduler.c:48
uint32_t __task_blocking_sleep(uint32_t ticks)
Privileged implementation of task_blocking_sleep.
Definition scheduler.c:121
icarus_task_state_t os_get_task_state(uint8_t task_idx)
Get a task's current state (safe from unprivileged mode).
Definition svc.c:1185
uint8_t __os_get_running_task_count(void)
Privileged implementation of os_get_running_task_count.
Definition scheduler.c:56
uint32_t os_get_task_ticks_remaining(void)
Get remaining ticks in current time slice.
Definition svc.c:613
const char * os_get_current_task_name(void)
Get name of currently executing task.
Definition svc.c:575
uint8_t __os_get_num_created_tasks(void)
Privileged implementation of os_get_num_created_tasks.
Definition kernel.c:345
uint32_t os_get_stack_watermark(uint8_t task_idx)
Get a task's stack high-water mark (minimum free words).
Definition svc.c:1225
icarus_task_state_t __os_get_task_state(uint8_t task_idx)
Privileged implementation of os_get_task_state.
Definition kernel.c:363
uint32_t task_blocking_sleep(uint32_t ticks)
Sleep with scheduler disabled (blocking)
Definition svc.c:542
const char * __os_get_current_task_name(void)
Privileged implementation of os_get_current_task_name.
Definition scheduler.c:65
uint32_t os_get_tick_count(void)
Get current system tick count.
Definition svc.c:556
const char * os_get_task_name(uint8_t task_idx)
Get task name by index (safe from unprivileged mode)
Definition svc.c:1123
uint8_t __os_is_running(void)
Privileged implementation of os_is_running.
Definition kernel.c:354
void os_update_stack_watermark(uint8_t task_idx)
Scan a task's stack for the sentinel pattern and update the watermark field in the TCB.
Definition svc.c:1245
uint32_t __os_get_task_dispatch_count(uint8_t task_idx)
Privileged implementation of os_get_task_dispatch_count.
Definition kernel.c:375
const char * __os_get_task_name(uint8_t task_idx)
Privileged implementation of os_get_task_name.
Definition kernel.c:315
uint32_t task_busy_wait(uint32_t ticks)
Busy-wait for specified ticks.
Definition svc.c:549
uint32_t task_active_sleep(uint32_t ticks)
Sleep for specified ticks (cooperative)
Definition svc.c:522
uint8_t os_is_running(void)
Check if OS is running (safe from unprivileged mode)
Definition svc.c:1166
void __os_update_stack_watermark(uint8_t task_idx)
Scan a task's stack from the base upward for the sentinel pattern (0xDEADC0DE) and update the waterma...
Definition kernel.c:399
uint8_t os_get_num_created_tasks(void)
Get number of created tasks (safe from unprivileged mode)
Definition svc.c:1145
uint32_t os_get_task_dispatch_count(uint8_t task_idx)
Get a task's dispatch count (times scheduled to run).
Definition svc.c:1205
uint32_t __os_get_stack_watermark(uint8_t task_idx)
Privileged implementation of os_get_stack_watermark.
Definition kernel.c:387
uint8_t os_get_running_task_count(void)
Get number of active tasks.
Definition svc.c:594
uint32_t __task_busy_wait(uint32_t ticks)
Privileged implementation of task_busy_wait.
Definition scheduler.c:133
uint32_t __task_active_sleep(uint32_t ticks)
Privileged implementation of task_active_sleep.
Definition scheduler.c:108
void __os_yield(void)
Privileged implementation of os_yield.
Definition scheduler.c:99
uint32_t __os_get_task_ticks_remaining(void)
Privileged implementation of os_get_task_ticks_remaining.
Definition scheduler.c:87
ICARUS OS Core Type Definitions.
icarus_task_state_t
Task state enumeration.
Definition types.h:75