38#ifndef _RTEMS_SCORE_SMPIMPL_H
39#define _RTEMS_SCORE_SMPIMPL_H
63#define SMP_MESSAGE_SHUTDOWN 0x1UL
70#define SMP_MESSAGE_PERFORM_JOBS 0x2UL
80#define SMP_MESSAGE_FORCE_PROCESSING 0x4UL
86 SMP_FATAL_BOOT_PROCESSOR_NOT_ASSIGNED_TO_SCHEDULER,
87 SMP_FATAL_MANDATORY_PROCESSOR_NOT_PRESENT,
88 SMP_FATAL_MULTITASKING_START_ON_INVALID_PROCESSOR,
89 SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR,
91 SMP_FATAL_SHUTDOWN_RESPONSE,
92 SMP_FATAL_START_OF_MANDATORY_PROCESSOR_FAILED,
93 SMP_FATAL_SCHEDULER_PIN_OR_UNPIN_NOT_SUPPORTED,
94 SMP_FATAL_WRONG_CPU_STATE_TO_PERFORM_JOBS,
95 SMP_FATAL_SCHEDULER_REQUIRES_EXACTLY_ONE_PROCESSOR,
96 SMP_FATAL_MULTITASKING_START_ON_NOT_ONLINE_PROCESSOR
114#if defined( RTEMS_SMP )
117 #define _SMP_Handler_initialize() \
121#if defined( RTEMS_SMP )
131extern Processor_mask _SMP_Online_processors;
187void _SMP_Try_to_process_message(
201static inline void _SMP_Inter_processor_interrupt_handler(
213 message = _Atomic_Exchange_ulong(
220 _SMP_Process_message( cpu_self,
message );
232bool _SMP_Should_start_processor( uint32_t cpu_index );
245typedef void ( *SMP_Action_handler )(
void *arg );
260void _SMP_Multicast_action(
261 const Processor_mask *targets,
262 SMP_Action_handler handler,
276void _SMP_Broadcast_action(
277 SMP_Action_handler handler,
291void _SMP_Othercast_action(
292 SMP_Action_handler handler,
305void _SMP_Unicast_action(
307 SMP_Action_handler handler,
317void _SMP_Synchronize(
void );
330void _SMP_Wait_for_ready_to_start_multitasking(
void );
338#if defined( RTEMS_SMP )
341 #define _SMP_Request_start_multitasking() \
352#if defined( RTEMS_SMP )
355 #define _SMP_Request_shutdown() \
364static inline const Processor_mask *_SMP_Get_online_processors(
void )
366#if defined(RTEMS_SMP)
367 return &_SMP_Online_processors;
369 return &_Processor_mask_The_one_and_only;
379static inline bool _SMP_Need_inter_processor_interrupts(
void )
This header file defines the Fatal Error Manager API.
This header file provides interfaces of the SMP Support which are used by the implementation and the ...
#define RTEMS_PREDICT_FALSE(_exp)
Evaluates the integral expression and tells the compiler that the predicted value is false (0).
Definition: basedefs.h:732
#define RTEMS_NO_RETURN
Tells the compiler in a function declaration that this function does not return.
Definition: basedefs.h:386
RTEMS_NO_RETURN void _Terminate(Internal_errors_Source the_source, Internal_errors_t the_error)
Initiates the system termination.
Definition: interr.c:51
@ RTEMS_FATAL_SOURCE_SMP
Fatal source of SMP domain.
Definition: interr.h:142
#define _SMP_Handler_initialize()
Initializes SMP Handler.
Definition: smpimpl.h:117
SMP_Fatal_code
SMP fatal codes.
Definition: smpimpl.h:85
#define _SMP_Request_shutdown()
Requests a shutdown of all processors.
Definition: smpimpl.h:355
#define _SMP_Request_start_multitasking()
Requests a multitasking start on all configured and available processors.
Definition: smpimpl.h:341
#define _SMP_Processor_configured_maximum
The configured processor maximum.
Definition: smp.h:68
This header file provides the interfaces of the Processor Mask.
This header file provides the interfaces of the Per-CPU Information.
Per CPU Core Structure.
Definition: percpu.h:384
volatile bool dispatch_necessary
This is set to true when this processor needs to run the thread dispatcher.
Definition: percpu.h:437
Definition: inftrees.h:24
Definition: media-server.c:46