source: rtems/cpukit/include/rtems/rtems/partmp.h @ d8de6b9

5
Last change on this file since d8de6b9 was 2afb22b, checked in by Chris Johns <chrisj@…>, on 12/23/17 at 07:18:56

Remove make preinstall

A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.

This has at least seven problems:

  • The make preinstall step itself needs time and disk space.
  • Errors in header files show up in the build tree copy. This makes it hard for editors to open the right file to fix the error.
  • There is no clear relationship between source and build tree header files. This makes an audit of the build process difficult.
  • The visibility of all header files in the build tree makes it difficult to enforce API barriers. For example it is discouraged to use BSP-specifics in the cpukit.
  • An introduction of a new build system is difficult.
  • Include paths specified by the -B option are system headers. This may suppress warnings.
  • The parallel build had sporadic failures on some hosts.

This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.

The new cpukit include directories are:

  • cpukit/include
  • cpukit/score/cpu/@RTEMS_CPU@/include
  • cpukit/libnetworking

The new BSP include directories are:

  • bsps/include
  • bsps/@RTEMS_CPU@/include
  • bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include

There are build tree include directories for generated files.

The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.

The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.

Update #3254.

  • Property mode set to 100644
File size: 3.5 KB
Line 
1/**
2 * @file rtems/rtems/partmp.h
3 *
4 * @brief MP Support in Partition Manager
5 *
6 * This include file contains all the constants and structures associated
7 * with the Multiprocessing Support in the Partition Manager.
8 */
9
10/* COPYRIGHT (c) 1989-2013.
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_RTEMS_PARTMP_H
19#define _RTEMS_RTEMS_PARTMP_H
20
21#ifndef _RTEMS_RTEMS_PARTIMPL_H
22# error "Never use <rtems/rtems/partmp.h> directly; include <rtems/rtems/partimpl.h> instead."
23#endif
24
25#include <rtems/score/mpciimpl.h>
26
27#ifdef __cplusplus
28extern "C" {
29#endif
30
31/**
32 *  @defgroup ClassicPartMP Partition MP Support
33 *
34 *  @ingroup ClassicMP
35 *
36 *  This encapsulates functionality related to the transparent multiprocessing
37 *  support within the Classic API Partition Manager.
38 */
39/*{*/
40
41/**
42 *  The following enumerated type defines the list of
43 *  remote partition operations.
44 */
45typedef enum {
46  PARTITION_MP_ANNOUNCE_CREATE        =  0,
47  PARTITION_MP_ANNOUNCE_DELETE        =  1,
48  PARTITION_MP_EXTRACT_PROXY          =  2,
49  PARTITION_MP_GET_BUFFER_REQUEST     =  3,
50  PARTITION_MP_GET_BUFFER_RESPONSE    =  4,
51  PARTITION_MP_RETURN_BUFFER_REQUEST  =  5,
52  PARTITION_MP_RETURN_BUFFER_RESPONSE =  6
53}   Partition_MP_Remote_operations;
54
55/**
56 *  The following data structure defines the packet used to perform
57 *  remote partition operations.
58 */
59typedef struct {
60  rtems_packet_prefix             Prefix;
61  Partition_MP_Remote_operations  operation;
62  rtems_name                      name;
63  void                           *buffer;
64  Objects_Id                      proxy_id;
65}   Partition_MP_Packet;
66
67RTEMS_INLINE_ROUTINE bool _Partition_MP_Is_remote( Objects_Id id )
68{
69  return _Objects_MP_Is_remote( id, &_Partition_Information );
70}
71
72/**
73 *  @brief Partition_MP_Send_process_packet
74 *
75 *  Multiprocessing Support for the Partition Manager
76 *
77 *  This routine performs a remote procedure call so that a
78 *  process operation can be performed on another node.
79 */
80void _Partition_MP_Send_process_packet (
81  Partition_MP_Remote_operations operation,
82  Objects_Id                     partition_id,
83  rtems_name                     name,
84  Objects_Id                     proxy_id
85);
86
87/**
88 * @brief Issues a remote rtems_partition_get_buffer() request.
89 */
90rtems_status_code _Partition_MP_Get_buffer(
91  rtems_id   id,
92  void     **buffer
93);
94
95/**
96 * @brief Issues a remote rtems_partition_return_buffer() request.
97 */
98rtems_status_code _Partition_MP_Return_buffer(
99  rtems_id  id,
100  void     *buffer
101);
102
103/**
104 *
105 *  @brief Partition_MP_Process_packet
106 *
107 *  This routine performs the actions specific to this package for
108 *  the request from another node.
109 */
110void _Partition_MP_Process_packet (
111  rtems_packet_prefix *the_packet_prefix
112);
113
114/*
115 *  @brief Partition_MP_Send_object_was_deleted
116 *
117 *  This routine is invoked indirectly by the thread queue
118 *  when a proxy has been removed from the thread queue and
119 *  the remote node must be informed of this.
120 *
121 *  This routine is not needed by the Partition since a partition
122 *  cannot be deleted when buffers are in use.
123 */
124
125/**
126 *  @brief Partition_MP_Send_extract_proxy
127 *
128 *  This routine is invoked when a task is deleted and it
129 *  has a proxy which must be removed from a thread queue and
130 *  the remote node must be informed of this.
131 */
132void _Partition_MP_Send_extract_proxy (
133  Thread_Control *the_thread,
134  Objects_Id      id
135);
136
137#ifdef __cplusplus
138}
139#endif
140
141/**@}*/
142
143#endif
144/* end of file */
Note: See TracBrowser for help on using the repository browser.