RTEMS CPU Kit with SuperCore  4.11.3
Files | Data Structures | Enumerations | Functions

Semaphore Manager MP Support. More...

Collaboration diagram for Semaphore MP Support:

Files

file  semmp.c
 Semaphore MP Support.
 

Data Structures

struct  Semaphore_MP_Packet
 The following data structure defines the packet used to perform remote semaphore operations. More...
 

Enumerations

enum  Semaphore_MP_Remote_operations {
  SEMAPHORE_MP_ANNOUNCE_CREATE = 0, SEMAPHORE_MP_ANNOUNCE_DELETE = 1, SEMAPHORE_MP_EXTRACT_PROXY = 2, SEMAPHORE_MP_OBTAIN_REQUEST = 3,
  SEMAPHORE_MP_OBTAIN_RESPONSE = 4, SEMAPHORE_MP_RELEASE_REQUEST = 5, SEMAPHORE_MP_RELEASE_RESPONSE = 6
}
 The following enumerated type defines the list of remote semaphore operations.
 

Functions

void _Semaphore_MP_Send_process_packet (Semaphore_MP_Remote_operations operation, Objects_Id semaphore_id, rtems_name name, Objects_Id proxy_id)
 Semaphore MP Send Process Packet. More...
 
rtems_status_code _Semaphore_MP_Send_request_packet (Semaphore_MP_Remote_operations operation, Objects_Id semaphore_id, rtems_option option_set, rtems_interval timeout)
 Semaphore MP Send Request Packet. More...
 
void _Semaphore_MP_Send_response_packet (Semaphore_MP_Remote_operations operation, Objects_Id semaphore_id, Thread_Control *the_thread)
 Semaphore MP Send Response Packet. More...
 
void _Semaphore_MP_Process_packet (rtems_packet_prefix *the_packet_prefix)
 Semaphore MP Process Packet. More...
 
void _Semaphore_MP_Send_object_was_deleted (Thread_Control *the_proxy)
 Semaphore MP Send Object was Deleted. More...
 
void _Semaphore_MP_Send_extract_proxy (void *argument)
 Semaphore MP Send Extract Proxy. More...
 
Semaphore_MP_Packet_Semaphore_MP_Get_packet (void)
 Semaphore MP Get Packet. More...
 
void _Semaphore_Core_mutex_mp_support (Thread_Control *the_thread, Objects_Id id)
 Semaphore Core Mutex MP Support. More...
 
void _Semaphore_Core_semaphore_mp_support (Thread_Control *the_thread, Objects_Id id)
 Semaphore Core MP Support. More...
 

Detailed Description

Semaphore Manager MP Support.

This encapsulates functionality related to the transparent multiprocessing support within the Classic API Semaphore Manager.

This include file contains all the constants and structures associated with the Multiprocessing Support in the Semaphore Manager.

Function Documentation

◆ _Semaphore_Core_mutex_mp_support()

void _Semaphore_Core_mutex_mp_support ( Thread_Control the_thread,
Objects_Id  id 
)

Semaphore Core Mutex MP Support.

This function processes the global actions necessary for remote accesses to a global semaphore based on a core mutex. This function is called by the core.

Parameters
[in]the_threadthe remote thread the semaphore was surrendered to
[in]idis the id of the surrendered semaphore

Referenced by _Semaphore_MP_Get_packet().

◆ _Semaphore_Core_semaphore_mp_support()

void _Semaphore_Core_semaphore_mp_support ( Thread_Control the_thread,
Objects_Id  id 
)

Semaphore Core MP Support.

This function processes the global actions necessary for remote accesses to a global semaphore based on a core semaphore. This function is called by the core.

Parameters
[in]the_threadthe remote thread the semaphore was surrendered to
[in]idis the id of the surrendered semaphore

◆ _Semaphore_MP_Get_packet()

Semaphore_MP_Packet* _Semaphore_MP_Get_packet ( void  )

Semaphore MP Get Packet.

This function is used to obtain a semaphore mp packet.

References _MPCI_Get_packet(), _Semaphore_Core_mutex_mp_support(), _Semaphore_MP_Send_response_packet(), and RTEMS_SUCCESSFUL.

◆ _Semaphore_MP_Process_packet()

void _Semaphore_MP_Process_packet ( rtems_packet_prefix *  the_packet_prefix)

Semaphore MP Process Packet.

This routine performs the actions specific to this package for the request from another node.

◆ _Semaphore_MP_Send_extract_proxy()

void _Semaphore_MP_Send_extract_proxy ( void *  argument)

Semaphore MP Send Extract Proxy.

This routine is invoked when a task is deleted and it has a proxy which must be removed from a thread queue and the remote node must be informed of this.

References _Semaphore_MP_Send_process_packet().

◆ _Semaphore_MP_Send_object_was_deleted()

void _Semaphore_MP_Send_object_was_deleted ( Thread_Control the_proxy)

Semaphore MP Send Object was Deleted.

This routine is invoked indirectly by the thread queue when a proxy has been removed from the thread queue and the remote node must be informed of this.

References _Semaphore_MP_Send_response_packet(), and RTEMS_OBJECT_WAS_DELETED.

◆ _Semaphore_MP_Send_process_packet()

void _Semaphore_MP_Send_process_packet ( Semaphore_MP_Remote_operations  operation,
Objects_Id  semaphore_id,
rtems_name  name,
Objects_Id  proxy_id 
)

Semaphore MP Send Process Packet.

This routine performs a remote procedure call so that a process operation can be performed on another node.

Referenced by _Semaphore_MP_Send_extract_proxy(), and rtems_semaphore_create().

◆ _Semaphore_MP_Send_request_packet()

rtems_status_code _Semaphore_MP_Send_request_packet ( Semaphore_MP_Remote_operations  operation,
Objects_Id  semaphore_id,
rtems_option  option_set,
rtems_interval  timeout 
)

Semaphore MP Send Request Packet.

This routine performs a remote procedure call so that a directive operation can be initiated on another node.

◆ _Semaphore_MP_Send_response_packet()

void _Semaphore_MP_Send_response_packet ( Semaphore_MP_Remote_operations  operation,
Objects_Id  semaphore_id,
Thread_Control the_thread 
)

Semaphore MP Send Response Packet.

This routine performs a remote procedure call so that a directive can be performed on another node.

Referenced by _Semaphore_MP_Get_packet(), and _Semaphore_MP_Send_object_was_deleted().