Functionality for Abstraction of Thread Context Management.
More...
|
file | context.h |
| Information About Each Thread's Context.
|
|
Functionality for Abstraction of Thread Context Management.
This handler encapsulates functionality which abstracts thread context management in a portable manner.
The context switch needed variable is contained in the per cpu data structure.
◆ _Context_Initialization_at_thread_begin
#define _Context_Initialization_at_thread_begin |
( |
| ) |
|
This macro is invoked from _Thread_Handler to do whatever CPU specific magic is required that must be done in the context of the thread when it starts.
If the CPU architecture does not require any magic, then this macro is empty.
Definition at line 94 of file context.h.
◆ _Context_Initialize
#define _Context_Initialize |
( |
|
_the_context, |
|
|
|
_stack, |
|
|
|
_size, |
|
|
|
_isr, |
|
|
|
_entry, |
|
|
|
_is_fp, |
|
|
|
_tls_area |
|
) |
| |
Value: _is_fp, _tls_area )
void _CPU_Context_Initialize(Context_Control *the_context, uint32_t *stack_base, uint32_t size, uint32_t new_level, void *entry_point, bool is_fp, void *tls_area)
Initialize context area.
This routine initializes _the_context such that the stack pointer, interrupt level, and entry point are correct for the thread's initial state.
- Parameters
-
[in] | _the_context | will be initialized |
[in] | _stack | is the lowest physical address of the thread's context |
[in] | _size | is the size in octets of the thread's context |
[in] | _isr | is the ISR enable level for this thread |
[in] | _entry | is this thread's entry point |
[in] | _is_fp | is set to true if this thread has floating point enabled |
[in] | _tls_area | The thread-local storage (TLS) area begin. |
Definition at line 76 of file context.h.
◆ _Context_Initialize_fp
Initialize floating point context area.
This routine initializes the floating point context save area to contain an initial known state.
- Parameters
-
[in] | _fp_area | is the base address of the floating point context save area to initialize. |
Definition at line 129 of file context.h.
◆ _Context_Restart_self
Restart currently executing thread.
This routine restarts the calling thread by restoring its initial stack pointer and returning to the thread's entry point.
- Parameters
-
[in] | _the_context | is the context of the thread to restart |
Definition at line 117 of file context.h.
◆ _Context_Restore_fp
Restore floating point context area.
This routine restores the floating point context contained in the _fp area. It is assumed that the current floating point context has been saved by a previous invocation of _Context_Save_fp.
- Parameters
-
[in] | _fp | points to the floating point context area to restore. |
Definition at line 142 of file context.h.
◆ _Context_Save_fp
Save floating point context area.
This routine saves the current floating point context in the _fp area.
- Parameters
-
[in] | _fp | points to the floating point context area to restore. |
Definition at line 153 of file context.h.
◆ _Context_Switch
Perform context switch.
This routine saves the current context into the _executing context record and restores the context specified by _heir.
- Parameters
-
[in] | _executing | is the currently executing thread's context |
[in] | _heir | is the context of the thread to be switched to |
Definition at line 106 of file context.h.
◆ CONTEXT_FP_SIZE
Value:#define CPU_CONTEXT_FP_SIZE
#define CPU_HEAP_ALIGNMENT
Size of floating point context area.
This constant defines the number of bytes required to store a full floating point context.
Definition at line 52 of file context.h.