34 #if defined(RTEMS_SMP) 48 if ( callout != NULL ) {
51 ctx->ok = ctx->ok && (*callout)( executing, ctx->created );
63 if ( callout != NULL ) {
64 (*callout)( executing, arg );
76 if ( callout != NULL ) {
77 (*callout)( executing, arg );
89 if ( callout != NULL ) {
90 (*callout)( executing, arg );
102 if ( callout != NULL ) {
103 (*callout)( executing );
115 if ( callout != NULL ) {
116 (*callout)( executing );
128 if ( callout != NULL ) {
131 (*callout)( ctx->source,
false, ctx->error );
142 callouts->thread_terminate;
144 if ( callout != NULL ) {
145 (*callout)( executing );
170 initial_current = initial_begin;
172 while ( initial_current != initial_end ) {
173 (*visitor)( executing, arg, initial_current );
191 if ( executing != NULL ) {
204 ( *visitor )( executing, arg, &extension->Callouts );
209 if ( executing != NULL ) {
218 initial_current = initial_end;
220 while ( initial_current != initial_begin ) {
222 (*visitor)( executing, arg, initial_current );
#define ISR_LOCK_INITIALIZER(_name)
Initializer for static initialization of ISR locks.
void(* User_extensions_thread_delete_extension)(struct _Thread_Control *executing, struct _Thread_Control *deleted)
Task delete extension.
static __inline__ void _Chain_Iterator_destroy(Chain_Iterator *the_iterator)
Destroys the iterator.
static __inline__ void _Chain_Iterator_set_position(Chain_Iterator *the_iterator, Chain_Node *the_node)
Sets the iterator position.
void(* User_extensions_thread_begin_extension)(struct _Thread_Control *executing)
Task begin extension.
bool(* User_extensions_thread_create_extension)(struct _Thread_Control *executing, struct _Thread_Control *created)
Task create extension.
#define CHAIN_INITIALIZER_EMPTY(name)
Chain initializer for an empty chain with designator name.
const size_t _User_extensions_Initial_count
The count of initial user extensions.
void _User_extensions_Thread_delete_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Deletes a visitor.
void _User_extensions_Thread_exitted_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Calls the exitted function of the thread callout for the visitor.
void(* User_extensions_thread_restart_extension)(struct _Thread_Control *executing, struct _Thread_Control *restarted)
Task restart extension.
Chain iterator for dynamic user extensions.
User Extension Handler API.
void _User_extensions_Fatal_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Calls the fatal function of the thread callout for the visitor.
const User_extensions_Table _User_extensions_Initial_extensions[]
The table of initial user extensions.
static __inline__ struct _Thread_Control * _Thread_Get_executing(void)
Returns the thread control block of the executing thread.
struct User_extensions_Iterator * last_user_extensions_iterator
LIFO list of user extensions iterators.
#define CHAIN_ITERATOR_REGISTRY_INITIALIZER(name)
Chain iterator registry initializer for static initialization.
void _User_extensions_Thread_restart_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Restarts a visitor.
void _User_extensions_Thread_begin_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Calls the begin function of the thread callout for the visitor.
void(* User_extensions_fatal_extension)(Internal_errors_Source source, bool always_set_to_false, Internal_errors_t code)
Fatal error extension.
void(* User_extensions_thread_start_extension)(struct _Thread_Control *executing, struct _Thread_Control *started)
Task start extension.
User_extensions_List _User_extensions_List
List of active extensions.
static __inline__ Chain_Node * _Chain_Iterator_next(const Chain_Iterator *the_iterator)
Returns the next node in the iterator direction.
static void _User_extensions_Release(ISR_lock_Context *lock_context)
Releases the lock context and enables interrupts.
void _User_extensions_Iterate(void *arg, User_extensions_Visitor visitor, Chain_Iterator_direction direction)
Iterates through all user extensions and calls the visitor for each.
void(* User_extensions_Visitor)(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
User extension visitor.
void(* User_extensions_thread_terminate_extension)(struct _Thread_Control *terminated)
Task termination extension.
Iteration from head to tail.
Chain_Iterator_registry Iterators
Chain iterator registration.
Manages each user extension set.
Chain_Control Active
Active dynamically added user extensions.
static __inline__ const Chain_Node * _Chain_Immutable_head(const Chain_Control *the_chain)
Returns pointer to immutable chain head.
void _User_extensions_Thread_create_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Creates a visitor.
void _User_extensions_Thread_terminate_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Terminates a visitor.
Local ISR lock context for acquire and release pairs.
Chain_Iterator_direction
The chain iterator direction.
static void _User_extensions_Acquire(ISR_lock_Context *lock_context)
Disables interrupts and acquires the lock context.
static __inline__ void _Chain_Iterator_initialize(Chain_Control *the_chain, Chain_Iterator_registry *the_registry, Chain_Iterator *the_iterator, Chain_Iterator_direction direction)
Initializes the chain iterator.
Iteration from tail to head.
void _User_extensions_Thread_start_visitor(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
Starts a visitor.
static __inline__ const Chain_Node * _Chain_Immutable_tail(const Chain_Control *the_chain)
Returns pointer to immutable chain tail.
void(* User_extensions_thread_exitted_extension)(struct _Thread_Control *executing)
Task exitted extension.