18 #ifndef _RTEMS_SCORE_USEREXTIMPL_H 19 #define _RTEMS_SCORE_USEREXTIMPL_H 53 void _User_extensions_Handler_initialization(
void );
55 void _User_extensions_Add_set(
63 _User_extensions_Add_set( extension );
71 extension->Callouts = *extension_table;
73 _User_extensions_Add_set( extension );
76 void _User_extensions_Remove_set(
98 void _User_extensions_Thread_create_visitor(
104 void _User_extensions_Thread_delete_visitor(
110 void _User_extensions_Thread_start_visitor(
116 void _User_extensions_Thread_restart_visitor(
122 void _User_extensions_Thread_begin_visitor(
128 void _User_extensions_Thread_exitted_visitor(
137 Internal_errors_t error;
140 void _User_extensions_Fatal_visitor(
146 void _User_extensions_Thread_terminate_visitor(
170 static inline bool _User_extensions_Thread_create(
Thread_Control *created )
179 static inline void _User_extensions_Thread_delete(
Thread_Control *deleted )
183 _User_extensions_Thread_delete_visitor
187 static inline void _User_extensions_Thread_start(
Thread_Control *started )
191 _User_extensions_Thread_start_visitor
195 static inline void _User_extensions_Thread_restart(
Thread_Control *restarted )
199 _User_extensions_Thread_restart_visitor
203 static inline void _User_extensions_Thread_begin(
Thread_Control *executing )
207 _User_extensions_Thread_begin_visitor
211 static inline void _User_extensions_Thread_switch(
220 if ( node != tail ) {
223 _Per_CPU_Acquire( cpu_self );
225 while ( node != tail ) {
229 (*extension->thread_switch)( executing, heir );
234 _Per_CPU_Release( cpu_self );
238 static inline void _User_extensions_Thread_exitted(
Thread_Control *executing )
242 _User_extensions_Thread_exitted_visitor
246 static inline void _User_extensions_Fatal(
249 Internal_errors_t error
257 static inline void _User_extensions_Thread_terminate(
263 _User_extensions_Thread_terminate_visitor
Manages the switch callouts.
Definition: userext.h:249
Definition: userextimpl.h:134
This is used to manage each element (node) which is placed on a chain.
Definition: chain.h:65
Chain_Control _User_extensions_List
List of active extensions.
#define RTEMS_INLINE_ROUTINE
The following (in conjunction with compiler arguments) are used to choose between the use of static i...
Definition: basedefs.h:135
Chain_Control _User_extensions_Switches_list
List of active task switch extensions.
This is used to manage a chain.
Definition: chain.h:83
void(* User_extensions_Visitor)(Thread_Control *executing, void *arg, const User_extensions_Table *callouts)
User extension visitor.
Definition: userextimpl.h:87
This include file defines the per CPU information required by RTEMS.
This structure defines the Thread Control Block (TCB).
Definition: thread.h:671
Per CPU Core Structure.
Definition: percpu.h:233
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_first(const Chain_Control *the_chain)
Return pointer to immutable chain's first node.
Definition: chainimpl.h:383
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_next(const Chain_Node *the_node)
Return pointer the immutable next node from this node.
Definition: chainimpl.h:449
Definition: userextimpl.h:93
void _User_extensions_Iterate(void *arg, User_extensions_Visitor visitor)
Iterates through all user extensions and calls the visitor for each.
Definition: userextiterate.c:141
User extension table.
Definition: userext.h:232
Manages each user extension set.
Definition: userext.h:260
RTEMS_INLINE_ROUTINE const Chain_Node * _Chain_Immutable_tail(const Chain_Control *the_chain)
Return pointer to immutable chain tail.
Definition: chainimpl.h:349
Internal_errors_Source
This type lists the possible sources from which an error can be reported.
Definition: interr.h:45
User Extension Handler API.