RTEMS Logo

RTEMS 4.9.4 On-Line Library


Configuring a System Multiprocessor Configuration Table

PREV UP NEXT Bookshelf RTEMS C User's Guide

23.10: Multiprocessor Configuration Table

The Multiprocessor Configuration Table contains information needed when using RTEMS in a multiprocessor configuration. Many of the details associated with configuring a multiprocessor system are dependent on the multiprocessor communications layer provided by the user. The address of the Multiprocessor Configuration Table should be placed in the User_multiprocessing_table entry in the primary Configuration Table. Further details regarding many of the entries in the Multiprocessor Configuration Table will be provided in the Multiprocessing chapter.

When using the rtems/confdefs.h mechanism for configuring an RTEMS application, the macro CONFIGURE_MP_APPLICATION must be defined to automatically generate the Multiprocessor Configuration Table. If CONFIGURE_MP_APPLICATION, is not defined, then a NULL pointer is configured as the address of this table.

The format of the Multiprocessor Configuration Table is defined in the following C structure:

typedef struct {
  uint32_t          node;
  uint32_t          maximum_nodes;
  uint32_t          maximum_global_objects;
  uint32_t          maximum_proxies;
  uint32_t          extra_mpci_receive_server_stack;
  rtems_mpci_table *User_mpci_table;
} rtems_multiprocessing_table;
node
is a unique processor identifier and is used in routing messages between nodes in a multiprocessor configuration. Each processor must have a unique node number. RTEMS assumes that node numbers start at one and increase sequentially. This assumption can be used to advantage by the user-supplied MPCI layer. Typically, this requirement is made when the node numbers are used to calculate the address of inter-processor communication links. Zero should be avoided as a node number because some MPCI layers use node zero to represent broadcasted packets. Thus, it is recommended that node numbers start at one and increase sequentially. When using the rtems/confdefs.h mechanism for configuring an RTEMS application, the value for this field corresponds to the setting of the macro CONFIGURE_MP_NODE_NUMBER. If not defined by the application, then the CONFIGURE_MP_NODE_NUMBER macro defaults to the value of the NODE_NUMBER macro which is set on the compiler command line by the RTEMS Multiprocessing Test Suites.
maximum_nodes
is the number of processor nodes in the system. When using the rtems/confdefs.h mechanism for configuring an RTEMS application, the value for this field corresponds to the setting of the macro CONFIGURE_MP_MAXIMUM_NODES. If not defined by the application, then the CONFIGURE_MP_MAXIMUM_NODES macro defaults to the value 2.
maximum_global_objects
is the maximum number of global objects which can exist at any given moment in the entire system. If this parameter is not the same on all nodes in the system, then a fatal error is generated to inform the user that the system is inconsistent. When using the rtems/confdefs.h mechanism for configuring an RTEMS application, the value for this field corresponds to the setting of the macro CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS. If not defined by the application, then the CONFIGURE_MP_MAXIMUM_GLOBAL_OBJECTS macro defaults to the value 32.
maximum_proxies
is the maximum number of proxies which can exist at any given moment on this particular node. A proxy is a substitute task control block which represent a task residing on a remote node when that task blocks on a remote object. Proxies are used in situations in which delayed interaction is required with a remote node. When using the rtems/confdefs.h mechanism for configuring an RTEMS application, the value for this field corresponds to the setting of the macro CONFIGURE_MP_MAXIMUM_PROXIES. If not defined by the application, then the CONFIGURE_MP_MAXIMUM_PROXIES macro defaults to the value 32.
extra_mpci_receive_server_stack
is the extra stack space allocated for the RTEMS MPCI receive server task in bytes. The MPCI receive server may invoke nearly all directives and may require extra stack space on some targets.
User_mpci_table
is the address of the Multiprocessor Communications Interface Table. This table contains the entry points of user-provided functions which constitute the multiprocessor communications layer. This table must be provided in multiprocessor configurations with all entries configured. The format of this table and details regarding its entries can be found in the next section. When using the rtems/confdefs.h mechanism for configuring an RTEMS application, the value for this field corresponds to the setting of the macro CONFIGURE_MP_MPCI_TABLE_POINTER. If not defined by the application, then the CONFIGURE_MP_MPCI_TABLE_POINTER macro defaults to the address of the table named MPCI_table.


PREV UP NEXT Bookshelf RTEMS C User's Guide

Copyright © 1988-2008 OAR Corporation