RTEMS
Macros | Typedefs | Enumerations | Functions | Variables
smpimpl.h File Reference

SuperCore SMP Implementation. More...

#include <rtems/score/smp.h>
#include <rtems/score/percpu.h>
#include <rtems/score/processormask.h>
#include <rtems/fatal.h>

Go to the source code of this file.

Macros

#define SMP_MESSAGE_SHUTDOWN   0x1UL
 SMP message to request a processor shutdown. More...
 
#define SMP_MESSAGE_PERFORM_JOBS   0x2UL
 SMP message to perform per-processor jobs. More...
 

Typedefs

typedef void(* SMP_Action_handler) (void *arg)
 

Enumerations

enum  SMP_Fatal_code {
  SMP_FATAL_BOOT_PROCESSOR_NOT_ASSIGNED_TO_SCHEDULER, SMP_FATAL_MANDATORY_PROCESSOR_NOT_PRESENT, SMP_FATAL_MULTITASKING_START_ON_INVALID_PROCESSOR, SMP_FATAL_MULTITASKING_START_ON_UNASSIGNED_PROCESSOR,
  SMP_FATAL_SHUTDOWN, SMP_FATAL_SHUTDOWN_RESPONSE, SMP_FATAL_START_OF_MANDATORY_PROCESSOR_FAILED, SMP_FATAL_SCHEDULER_PIN_OR_UNPIN_NOT_SUPPORTED,
  SMP_FATAL_WRONG_CPU_STATE_TO_PERFORM_JOBS
}
 SMP fatal codes.
 

Functions

static void _SMP_Fatal (SMP_Fatal_code code)
 Terminates with the given code. More...
 
void _SMP_Handler_initialize (void)
 Initializes SMP Handler. More...
 
void _SMP_Start_multitasking_on_secondary_processor (Per_CPU_Control *cpu_self) RTEMS_NO_RETURN
 Performs high-level initialization of a secondary processor and runs the application threads. More...
 
static long unsigned _SMP_Inter_processor_interrupt_handler (Per_CPU_Control *cpu_self)
 Interrupts handler for inter-processor interrupts. More...
 
bool _SMP_Should_start_processor (uint32_t cpu_index)
 Checks if the processor with the specified index should be started. More...
 
void _SMP_Send_message (uint32_t cpu_index, unsigned long message)
 Sends an SMP message to a processor. More...
 
void _SMP_Send_message_broadcast (unsigned long message)
 Sends an SMP message to all other online processors. More...
 
void _SMP_Send_message_multicast (const Processor_mask *targets, unsigned long message)
 Sends an SMP message to a set of processors. More...
 
void _SMP_Multicast_action (const Processor_mask *targets, SMP_Action_handler handler, void *arg)
 Initiates an SMP multicast action to the set of target processors. More...
 
void _SMP_Broadcast_action (SMP_Action_handler handler, void *arg)
 Initiates an SMP multicast action to the set of all online processors. More...
 
void _SMP_Othercast_action (SMP_Action_handler handler, void *arg)
 Initiates an SMP multicast action to the set of all online processors excluding the current processor. More...
 
void _SMP_Unicast_action (uint32_t cpu_index, SMP_Action_handler handler, void *arg)
 Initiates an SMP action on the specified target processor. More...
 
void _SMP_Synchronize (void)
 Ensures that all store operations issued by the current processor before the call this function are visible to all other online processors. More...
 
void _SMP_Request_start_multitasking (void)
 Requests a multitasking start on all configured and available processors.
 
void _SMP_Request_shutdown (void)
 Requests a shutdown of all processors. More...
 
static __inline__ const Processor_mask * _SMP_Get_online_processors (void)
 Gets all online processors. More...
 
static __inline__ const bool _SMP_Need_inter_processor_interrupts (void)
 Indicate if inter-processor interrupts are needed. More...
 

Variables

Processor_mask _SMP_Online_processors
 Set of online processors. More...
 

Detailed Description

SuperCore SMP Implementation.

Definition in file smpimpl.h.