26 static void _User_extensions_Set_ancestors(
void )
28 #if defined(RTEMS_SMP) 33 cpu_max = _SMP_Get_processor_maximum();
35 for ( cpu_index = 0 ; cpu_index < cpu_max ; ++cpu_index ) {
38 cpu = _Per_CPU_Get_by_index( cpu_index );
63 if ( the_extension->Callouts.thread_switch != NULL ) {
64 the_extension->Switch.thread_switch =
65 the_extension->Callouts.thread_switch;
67 _Per_CPU_Acquire_all( &lock_context );
68 _User_extensions_Set_ancestors();
72 &the_extension->Switch.Node
74 _Per_CPU_Release_all( &lock_context );
struct _Thread_Control * executing
This is the thread executing on this processor.
static __inline__ void _Chain_Initialize_node(Chain_Node *the_node)
Initializes a chain node.
Chain_Control _User_extensions_Switches_list
List of active task switch extensions.
struct _Thread_Control * ancestor
The ancestor of the executing thread.
User Extension Handler API.
SuperCore SMP Support API.
static __inline__ void _Chain_Append_unprotected(Chain_Control *the_chain, Chain_Node *the_node)
Appends a node (unprotected).
User_extensions_List _User_extensions_List
List of active extensions.
void _User_extensions_Add_set(User_extensions_Control *the_extension)
Adds a user extension.
static void _User_extensions_Release(ISR_lock_Context *lock_context)
Releases the lock context and enables interrupts.
Manages each user extension set.
Chain_Control Active
Active dynamically added user extensions.
Local ISR lock context for acquire and release pairs.
static void _User_extensions_Acquire(ISR_lock_Context *lock_context)
Disables interrupts and acquires the lock context.
static __inline__ bool _Chain_Is_empty(const Chain_Control *the_chain)
Checks if the chain is empty.