OAR

RTEMS 4.5.1-pre3 On-Line Library


Multiprocessing Manager Remote Operations

PREV UP NEXT Bookshelf RTEMS Ada User's Guide

23.2.4: Remote Operations

When an application performs an operation on a remote global object, RTEMS must generate a Remote Request (RQ) message and send it to the appropriate node. After completing the requested operation, the remote node will build a Remote Response (RR) message and send it to the originating node. Messages generated as a side-effect of a directive (such as deleting a global task) are known as Remote Processes (RP) and do not require the receiving node to respond.

Other than taking slightly longer to execute directives on remote objects, the application is unaware of the location of the objects it acts upon. The exact amount of overhead required for a remote operation is dependent on the media connecting the nodes and, to a lesser degree, on the efficiency of the user-provided MPCI routines.

The following shows the typical transaction sequence during a remote application:

  1. The application issues a directive accessing a remote global object.
  2. RTEMS determines the node on which the object resides.
  3. RTEMS calls the user-provided MPCI routine GET_PACKET to obtain a packet in which to build a RQ message.
  4. After building a message packet, RTEMS calls the user-provided MPCI routine SEND_PACKET to transmit the packet to the node on which the object resides (referred to as the destination node).
  5. The calling task is blocked until the RR message arrives, and control of the processor is transferred to another task.
  6. The MPCI layer on the destination node senses the arrival of a packet (commonly in an ISR), and calls the rtems.multiprocessing_announce directive. This directive readies the Multiprocessing Server.
  7. The Multiprocessing Server calls the user-provided MPCI routine RECEIVE_PACKET, performs the requested operation, builds an RR message, and returns it to the originating node.
  8. The MPCI layer on the originating node senses the arrival of a packet (typically via an interrupt), and calls the RTEMS rtems.multiprocessing_announce directive. This directive readies the Multiprocessing Server.
  9. The Multiprocessing Server calls the user-provided MPCI routine RECEIVE_PACKET, readies the original requesting task, and blocks until another packet arrives. Control is transferred to the original task which then completes processing of the directive.

If an uncorrectable error occurs in the user-provided MPCI layer, the fatal error handler should be invoked. RTEMS assumes the reliable transmission and reception of messages by the MPCI and makes no attempt to detect or correct errors.


PREV UP NEXT Bookshelf RTEMS Ada User's Guide

Copyright © 1988-2000 OAR Corporation