source: rtems/cpukit/include/rtems/score/mpci.h @ 976c095

Last change on this file since 976c095 was 976c095, checked in by Andreas Dachsberger <andreas.dachsberger@…>, on Apr 9, 2019 at 9:35:55 AM

doxygen: score: adjust doc in mpci.h to doxygen guidelines

Update #3706.

  • Property mode set to 100644
File size: 4.1 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup RTEMSScoreMPCI
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 RTEMSScoreMPCI MPCI Handler
32 *
33 * @ingroup RTEMSScore
34 *
35 * @brief MPCI Handler
36 *
37 * The MPCI Handler encapsulates functionality which is related to the
38 * generation, receipt, and processing of remote operations in a
39 * multiprocessor system.  This handler contains the message passing
40 * support for making remote service calls as well as the server thread
41 * which processes requests from remote nodes.
42 *
43 * @{
44 */
45
46/**
47 *  The following defines the node number used when a broadcast is desired.
48 */
49#define MPCI_ALL_NODES 0
50
51/**
52 *  This type is returned by all user provided MPCI routines.
53 */
54typedef void MPCI_Entry;
55
56/**
57 *  This type defines the prototype for the initization entry point
58 *  in an Multiprocessor Communications Interface.
59 */
60typedef MPCI_Entry ( *MPCI_initialization_entry )( void );
61
62/**
63 *  This type defines the prototype for the get packet entry point
64 *  in an Multiprocessor Communications Interface.  The single
65 *  parameter will point to the packet allocated.
66 */
67typedef MPCI_Entry ( *MPCI_get_packet_entry )(
68                     MP_packet_Prefix **
69                   );
70
71/**
72 *  This type defines the prototype for the return packet entry point
73 *  in an Multiprocessor Communications Interface.  The single
74 *  parameter will point to a packet previously allocated by the
75 *  get packet MPCI entry.
76 */
77typedef MPCI_Entry ( *MPCI_return_packet_entry )(
78                     MP_packet_Prefix *
79                   );
80
81/**
82 *  This type defines the prototype for send get packet entry point
83 *  in an Multiprocessor Communications Interface.  The single
84 *  parameter will point to a packet previously allocated by the
85 *  get packet entry point that has been filled in by the caller.
86 */
87typedef MPCI_Entry ( *MPCI_send_entry )(
88                     uint32_t,
89                     MP_packet_Prefix *
90                   );
91
92/**
93 *  This type defines the prototype for the receive packet entry point
94 *  in an Multiprocessor Communications Interface.  The single
95 *  parameter will point to a packet allocated and filled in by the
96 *  receive packet handler.  The caller will block until a packet is
97 *  received.
98 */
99typedef MPCI_Entry ( *MPCI_receive_entry )(
100                     MP_packet_Prefix **
101                   );
102
103/**
104 *  This type defines the Multiprocessor Communications
105 *  Interface (MPCI) Table.  This table defines the user-provided
106 *  MPCI which is a required part of a multiprocessor system.
107 *
108 *  For non-blocking local operations that become remote operations,
109 *  we need a timeout.  This is a per-driver timeout: default_timeout
110 */
111typedef struct {
112  /** This fields contains the timeout for MPCI operations in ticks. */
113  uint32_t                   default_timeout;
114  /** This field contains the maximum size of a packet supported by this
115   *  MPCI layer.  This size places a limit on the size of a message
116   *  which can be transmitted over this interface.
117   **/
118  size_t                     maximum_packet_size;
119  /** This field points to the MPCI initialization entry point. */
120  MPCI_initialization_entry  initialization;
121  /** This field points to the MPCI get packet entry point. */
122  MPCI_get_packet_entry      get_packet;
123  /** This field points to the MPCI return packet entry point. */
124  MPCI_return_packet_entry   return_packet;
125  /** This field points to the MPCI send packet entry point. */
126  MPCI_send_entry            send_packet;
127  /** This field points to the MPCI receive packet entry point. */
128  MPCI_receive_entry         receive_packet;
129} MPCI_Control;
130
131/** @} */
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif
138/* end of include file */
Note: See TracBrowser for help on using the repository browser.