RTEMS  5.1
Files | Macros | Functions
Thread Handler Multiprocessing Support

Thread Handler Multiprocessing Support. More...

Files

file  threadmp.h
 Multiprocessing Portion of the Thread Package.
 
file  threadmp.c
 Distributed MP Support.
 

Macros

#define _Thread_MP_Is_receive(_the_thread)   ((_the_thread) == _MPCI_Receive_server_tcb)
 

Functions

void _Thread_MP_Handler_initialization (uint32_t maximum_proxies)
 Initialize MP thread handler. More...
 
Thread_Control_Thread_MP_Allocate_proxy (States_Control the_state)
 Allocates a MP proxy control block from the inactive chain of free proxy control blocks. More...
 
Thread_Control_Thread_MP_Find_proxy (Objects_Id the_id)
 Removes the MP proxy control block for the specified id from the active chain of proxy control blocks. More...
 
void _Thread_MP_Free_proxy (Thread_Control *the_thread)
 Trees a proxy control block to the inactive chain of free proxy control blocks.
 
RTEMS_INLINE_ROUTINE bool _Thread_MP_Is_remote (Objects_Id id)
 Checks if the thread MP with this object id is remote. More...
 

Detailed Description

Thread Handler Multiprocessing Support.

This handler encapsulates functionality which is related to managing threads in a multiprocessor system configuration. This handler must manage proxies which represent remote threads blocking on local operations.

Macro Definition Documentation

◆ _Thread_MP_Is_receive

#define _Thread_MP_Is_receive (   _the_thread)    ((_the_thread) == _MPCI_Receive_server_tcb)

This function returns true if the thread in question is the multiprocessing receive thread.

Note
This is a macro to avoid needing a prototype for _MPCI_Receive_server_tcb until it is used.

Function Documentation

◆ _Thread_MP_Allocate_proxy()

Thread_Control* _Thread_MP_Allocate_proxy ( States_Control  the_state)

Allocates a MP proxy control block from the inactive chain of free proxy control blocks.

This allocates a proxy control block from the inactive chain of free proxy control blocks.

Note
This function returns a thread control pointer because proxies are substitutes for remote threads.
  • Parameters
    the_stateThe state for the allocated MP proxy control block.

◆ _Thread_MP_Find_proxy()

Thread_Control* _Thread_MP_Find_proxy ( Objects_Id  the_id)

Removes the MP proxy control block for the specified id from the active chain of proxy control blocks.

This function removes the proxy control block for the specified id from the active red-black tree of proxy control blocks.

Parameters
the_idThe id of the proxy control block to remove.
Returns
The removed proxy control block.

◆ _Thread_MP_Handler_initialization()

void _Thread_MP_Handler_initialization ( uint32_t  maximum_proxies)

Initialize MP thread handler.

This routine initializes the multiprocessing portion of the Thread Handler.

Parameters
maximum_proxiesThe maximum number of proxies for the MP thread handler.

◆ _Thread_MP_Is_remote()

RTEMS_INLINE_ROUTINE bool _Thread_MP_Is_remote ( Objects_Id  id)

Checks if the thread MP with this object id is remote.

Parameters
idThe object id.
Return values
trueThe object id is valid and the thread MP with this object id is remote.
falseThe object if is not valid or the thread MP with this object id is not remote.