|
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
1.8.8