TNeoKernel
v1.02
|
Architecture-dependent routines declaration.
Definition in file tn_arch.h.
Go to the source code of this file.
Functions | |
void | tn_arch_int_dis (void) |
Unconditionally disable interrupts. | |
void | tn_arch_int_en (void) |
Unconditionally enable interrupts. | |
unsigned int | tn_arch_sr_save_int_dis (void) |
Disable interrupts and return previous value of status register, atomically. More... | |
void | tn_arch_sr_restore (unsigned int sr) |
Restore previously saved status register. More... | |
TN_UWord * | _tn_arch_stack_top_get (TN_UWord *stack_low_address, int stack_size) |
Should return top of the stack, which may be either: More... | |
unsigned int * | _tn_arch_stack_init (TN_TaskBody *task_func, TN_UWord *stack_top, void *param) |
Should initialize stack for new task and return current stack pointer. More... | |
int | _tn_arch_inside_isr (void) |
Should return 1 if ISR is currently running, 0 otherwise. | |
void | _tn_arch_context_switch (void) |
Called whenever we need to switch context to other task. More... | |
void | _tn_arch_context_switch_exit (void) |
Called when some task calls tn_task_exit() . More... | |
void | _tn_arch_system_start (void) |
Should perform first context switch (to the task pointed to by tn_next_task_to_run ). More... | |
unsigned int tn_arch_sr_save_int_dis | ( | void | ) |
Disable interrupts and return previous value of status register, atomically.
tn_arch_sr_restore()
void tn_arch_sr_restore | ( | unsigned int | sr | ) |
Restore previously saved status register.
sr | status register value previously from tn_arch_sr_save_int_dis() |
tn_arch_sr_save_int_dis()
Should return top of the stack, which may be either:
(stack_low_address - 1)
(stack_low_address + stack_size)
(depending on the architecture)
NOTE that returned top of the stack is NOT the address which may be used for storing the new data. Instead, it is the previous address.
stack_low_address | start address of the stack array. |
stack_size | size of the stack in TN_UWord -s, not in bytes. |
unsigned int* _tn_arch_stack_init | ( | TN_TaskBody * | task_func, |
TN_UWord * | stack_top, | ||
void * | param | ||
) |
Should initialize stack for new task and return current stack pointer.
task_func | Pointer to task body function. |
stack_top | Top of the stack, returned by _tn_arch_stack_top_get() . |
param | User-provided parameter for task body function. |
void _tn_arch_context_switch | ( | void | ) |
Called whenever we need to switch context to other task.
Preconditions:
tn_curr_run_task
points to currently running (preempted) task;tn_next_task_to_run
points to new task to run.Actions to perform:
tn_curr_run_task
to tn_next_task_to_run
;tn_curr_run_task
tn_next_task_to_run
void _tn_arch_context_switch_exit | ( | void | ) |
Called when some task calls tn_task_exit()
.
Preconditions:
tn_next_task_to_run
is already set to other task.Actions to perform:
tn_curr_run_task
to tn_next_task_to_run
;tn_curr_run_task
tn_next_task_to_run
void _tn_arch_system_start | ( | void | ) |
Should perform first context switch (to the task pointed to by tn_next_task_to_run
).
Preconditions:
tn_next_task_to_run
is already set to idle task.Actions to perform:
TN_STATE_FLAG__SYS_RUNNING
flag in the tn_sys_state
variable;tn_curr_run_task
to tn_next_task_to_run
;TN_STATE_FLAG__SYS_RUNNING
tn_sys_state
tn_curr_run_task
tn_next_task_to_run