RTEMS
Files | Macros
Context Handler

Functionality for Abstraction of Thread Context Management. More...

Files

file  context.h
 Information About Each Thread's Context.
 

Macros

#define CONTEXT_FP_SIZE
 Size of floating point context area. More...
 
#define _Context_Initialize(_the_context, _stack, _size, _isr, _entry, _is_fp, _tls_area)
 Initialize context area. More...
 
#define _Context_Initialization_at_thread_begin()
 
#define _Context_Switch(_executing, _heir)   _CPU_Context_switch( _executing, _heir )
 Perform context switch. More...
 
#define _Context_Restart_self(_the_context)   _CPU_Context_Restart_self( _the_context )
 Restart currently executing thread. More...
 
#define _Context_Initialize_fp(_fp_area)   _CPU_Context_Initialize_fp( _fp_area )
 Initialize floating point context area. More...
 
#define _Context_Restore_fp(_fp)   _CPU_Context_restore_fp( _fp )
 Restore floating point context area. More...
 
#define _Context_Save_fp(_fp)   _CPU_Context_save_fp( _fp )
 Save floating point context area. More...
 
#define _Context_Destroy(_the_thread, _the_context)
 

Detailed Description

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.

Macro Definition Documentation

◆ _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:
_CPU_Context_Initialize( _the_context, _stack, _size, _isr, _entry, \
_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)
Definition: cpu.c:354

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_contextwill be initialized
[in]_stackis the lowest physical address of the thread's context
[in]_sizeis the size in octets of the thread's context
[in]_isris the ISR enable level for this thread
[in]_entryis this thread's entry point
[in]_is_fpis set to true if this thread has floating point enabled
[in]_tls_areaThe thread-local storage (TLS) area begin.

Definition at line 76 of file context.h.

◆ _Context_Initialize_fp

#define _Context_Initialize_fp (   _fp_area)    _CPU_Context_Initialize_fp( _fp_area )

Initialize floating point context area.

This routine initializes the floating point context save area to contain an initial known state.

Parameters
[in]_fp_areais the base address of the floating point context save area to initialize.

Definition at line 129 of file context.h.

◆ _Context_Restart_self

#define _Context_Restart_self (   _the_context)    _CPU_Context_Restart_self( _the_context )

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_contextis the context of the thread to restart

Definition at line 117 of file context.h.

◆ _Context_Restore_fp

#define _Context_Restore_fp (   _fp)    _CPU_Context_restore_fp( _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]_fppoints to the floating point context area to restore.

Definition at line 142 of file context.h.

◆ _Context_Save_fp

#define _Context_Save_fp (   _fp)    _CPU_Context_save_fp( _fp )

Save floating point context area.

This routine saves the current floating point context in the _fp area.

Parameters
[in]_fppoints to the floating point context area to restore.

Definition at line 153 of file context.h.

◆ _Context_Switch

#define _Context_Switch (   _executing,
  _heir 
)    _CPU_Context_switch( _executing, _heir )

Perform context switch.

This routine saves the current context into the _executing context record and restores the context specified by _heir.

Parameters
[in]_executingis the currently executing thread's context
[in]_heiris the context of the thread to be switched to

Definition at line 106 of file context.h.

◆ CONTEXT_FP_SIZE

#define CONTEXT_FP_SIZE
Value:
& ~( CPU_HEAP_ALIGNMENT - 1 ) )
#define CPU_CONTEXT_FP_SIZE
Definition: cpu.h:652
#define CPU_HEAP_ALIGNMENT
Definition: cpu.h:755

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.