source: rtems/cpukit/score/include/rtems/score/mpci.h @ 8e7db68c

4.115
Last change on this file since 8e7db68c was c499856, checked in by Chris Johns <chrisj@…>, on 03/20/14 at 21:10:47

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 4.1 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup ScoreMPCI
5 *
6 * @brief MPCI Layer API
7 */
8
9/*
10 *  COPYRIGHT (c) 1989-2009.
11 *  On-Line Applications Research Corporation (OAR).
12 *
13 *  The license and distribution terms for this file may be
14 *  found in the file LICENSE in this distribution or at
15 *  http://www.rtems.org/license/LICENSE.
16 */
17
18#ifndef _RTEMS_SCORE_MPCI_H
19#define _RTEMS_SCORE_MPCI_H
20
21#include <rtems/score/mppkt.h>
22#include <rtems/score/thread.h>
23#include <rtems/score/threadq.h>
24#include <rtems/score/watchdog.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30/**
31 *  @defgroup ScoreMPCI MPCI Handler
32 *
33 *  @ingroup Score
34 *
35 *  The MPCI Handler encapsulates functionality which is related to the
36 *  generation, receipt, and processing of remote operations in a
37 *  multiprocessor system.  This handler contains the message passing
38 *  support for making remote service calls as well as the server thread
39 *  which processes requests from remote nodes.
40*/
41/**@{*/
42
43/**
44 *  The following defines the node number used when a broadcast is desired.
45 */
46#define MPCI_ALL_NODES 0
47
48/**
49 *  This type is returned by all user provided MPCI routines.
50 */
51typedef void MPCI_Entry;
52
53/**
54 *  This type defines the prototype for the initization entry point
55 *  in an Multiprocessor Communications Interface.
56 */
57typedef MPCI_Entry ( *MPCI_initialization_entry )( void );
58
59/**
60 *  This type defines the prototype for the get packet entry point
61 *  in an Multiprocessor Communications Interface.  The single
62 *  parameter will point to the packet allocated.
63 */
64typedef MPCI_Entry ( *MPCI_get_packet_entry )(
65                     MP_packet_Prefix **
66                   );
67
68/**
69 *  This type defines the prototype for the return packet entry point
70 *  in an Multiprocessor Communications Interface.  The single
71 *  parameter will point to a packet previously allocated by the
72 *  get packet MPCI entry.
73 */
74typedef MPCI_Entry ( *MPCI_return_packet_entry )(
75                     MP_packet_Prefix *
76                   );
77
78/**
79 *  This type defines the prototype for send get packet entry point
80 *  in an Multiprocessor Communications Interface.  The single
81 *  parameter will point to a packet previously allocated by the
82 *  get packet entry point that has been filled in by the caller.
83 */
84typedef MPCI_Entry ( *MPCI_send_entry )(
85                     uint32_t,
86                     MP_packet_Prefix *
87                   );
88
89/**
90 *  This type defines the prototype for the receive packet entry point
91 *  in an Multiprocessor Communications Interface.  The single
92 *  parameter will point to a packet allocated and filled in by the
93 *  receive packet handler.  The caller will block until a packet is
94 *  received.
95 */
96typedef MPCI_Entry ( *MPCI_receive_entry )(
97                     MP_packet_Prefix **
98                   );
99
100/**
101 *  This type defines the Multiprocessor Communications
102 *  Interface (MPCI) Table.  This table defines the user-provided
103 *  MPCI which is a required part of a multiprocessor system.
104 *
105 *  For non-blocking local operations that become remote operations,
106 *  we need a timeout.  This is a per-driver timeout: default_timeout
107 */
108typedef struct {
109  /** This fields contains the timeout for MPCI operations in ticks. */
110  uint32_t                   default_timeout;
111  /** This field contains the maximum size of a packet supported by this
112   *  MPCI layer.  This size places a limit on the size of a message
113   *  which can be transmitted over this interface.
114   **/
115  size_t                     maximum_packet_size;
116  /** This field points to the MPCI initialization entry point. */
117  MPCI_initialization_entry  initialization;
118  /** This field points to the MPCI get packet entry point. */
119  MPCI_get_packet_entry      get_packet;
120  /** This field points to the MPCI return packet entry point. */
121  MPCI_return_packet_entry   return_packet;
122  /** This field points to the MPCI send packet entry point. */
123  MPCI_send_entry            send_packet;
124  /** This field points to the MPCI receive packet entry point. */
125  MPCI_receive_entry         receive_packet;
126} MPCI_Control;
127
128/**@}*/
129
130#ifdef __cplusplus
131}
132#endif
133
134#endif
135/* end of include file */
Note: See TracBrowser for help on using the repository browser.