RTEMS 6.1-rc1
|
This group contains the implementation to support the Thread Handler in multiprocessing (MP) configurations. More...
Files | |
file | threadmp.h |
This header file provides the interfaces of the Thread Handler Multiprocessing (MP) Support. | |
file | threadmp.c |
This source file contains the implementation of _Thread_MP_Handler_initialization(), _Thread_MP_Allocate_proxy(), _Thread_MP_Find_proxy(), _Thread_MP_Free_proxy(). | |
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_Extract_proxy (Thread_Control *the_thread) |
Extracts the proxy of the thread if necessary. More... | |
void | _Thread_MP_Free_proxy (Thread_Control *the_thread) |
Trees a proxy control block to the inactive chain of free proxy control blocks. | |
This group contains the implementation to support the Thread Handler in multiprocessing (MP) configurations.
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.
#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.
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.
the_state | The state for the allocated MP proxy control block. |
void _Thread_MP_Extract_proxy | ( | Thread_Control * | the_thread | ) |
Extracts the proxy of the thread if necessary.
This routine ensures that if there is a proxy for this thread on another node, it is also dealt with. A proxy is a data that is on the thread queue on the remote node and acts as a proxy for the local thread. If the local thread was waiting on a remote operation, then the remote side of the operation must be cleaned up.
[in,out] | the_thread | is the thread to determine the 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.
the_id | The id of the proxy control block to remove. |
void _Thread_MP_Handler_initialization | ( | uint32_t | maximum_proxies | ) |
Initialize MP thread handler.
This routine initializes the multiprocessing portion of the Thread Handler.
maximum_proxies | The maximum number of proxies for the MP thread handler. |