source: rtems/cpukit/include/rtems/rtems/taskmp.h @ e8e914b3

5
Last change on this file since e8e914b3 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.3 KB
Line 
1/**
2 * @file rtems/rtems/taskmp.h
3 *
4 * @defgroup ClassicTaskMP Task MP Support
5 *
6 * @ingroup ClassicRTEMS
7 * @brief Task Manager MP Support
8 *
9 * This include file contains all the constants and structures associated
10 * with the multiprocessing support in the task manager.
11 */
12
13/* COPYRIGHT (c) 1989-2013.
14 * On-Line Applications Research Corporation (OAR).
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21#ifndef _RTEMS_RTEMS_TASKMP_H
22#define _RTEMS_RTEMS_TASKMP_H
23
24#ifndef _RTEMS_RTEMS_TASKSIMPL_H
25# error "Never use <rtems/rtems/taskmp.h> directly; include <rtems/rtems/tasksimpl.h> instead."
26#endif
27
28#include <rtems/score/mpciimpl.h>
29
30#ifdef __cplusplus
31extern "C" {
32#endif
33
34/**
35 *  @defgroup ClassicTaskMP Task MP Support
36 *
37 *  @ingroup ClassicMP
38 *
39 *  This encapsulates functionality related to the transparent multiprocessing
40 *  support within the Classic API Task Manager.
41 */
42/**@{*/
43
44/**
45 *  The following enumerated type defines the list of
46 *  remote task operations.
47 */
48typedef enum {
49  RTEMS_TASKS_MP_ANNOUNCE_CREATE       =  0,
50  RTEMS_TASKS_MP_ANNOUNCE_DELETE       =  1,
51  RTEMS_TASKS_MP_SUSPEND_REQUEST       =  2,
52  RTEMS_TASKS_MP_SUSPEND_RESPONSE      =  3,
53  RTEMS_TASKS_MP_RESUME_REQUEST        =  4,
54  RTEMS_TASKS_MP_RESUME_RESPONSE       =  5,
55  RTEMS_TASKS_MP_SET_PRIORITY_REQUEST  =  6,
56  RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE =  7,
57}   RTEMS_tasks_MP_Remote_operations;
58
59/**
60 *  @brief RTEMS Tasks MP Send Process Packet
61 *
62 *  Multiprocessing Support for the RTEMS Task Manager
63 *
64 *  This routine performs a remote procedure call so that a
65 *  process operation can be performed on another node.
66 */
67void _RTEMS_tasks_MP_Send_process_packet (
68  RTEMS_tasks_MP_Remote_operations operation,
69  Objects_Id                       task_id,
70  rtems_name                       name
71);
72
73/**
74 * @brief Issues a remote rtems_task_set_priority() request.
75 */
76rtems_status_code _RTEMS_tasks_MP_Set_priority(
77  rtems_id             id,
78  rtems_task_priority  new_priority,
79  rtems_task_priority *old_priority
80);
81
82/**
83 * @brief Issues a remote rtems_task_suspend() request.
84 */
85rtems_status_code _RTEMS_tasks_MP_Suspend( rtems_id id );
86
87/**
88 * @brief Issues a remote rtems_task_resume() request.
89 */
90rtems_status_code _RTEMS_tasks_MP_Resume( rtems_id id );
91
92/**
93 *  @brief _RTEMS_tasks_MP_Process_packet
94 *
95 *  This routine performs the actions specific to this package for
96 *  the request from another node.
97 */
98void _RTEMS_tasks_MP_Process_packet (
99  rtems_packet_prefix *the_packet_prefix
100);
101
102/**
103 *  @brief _RTEMS_tasks_MP_Send_object_was_deleted
104 *
105 *  This routine is invoked indirectly by the thread queue
106 *  when a proxy has been removed from the thread queue and
107 *  the remote node must be informed of this.
108 *
109 *  This routine is not needed by RTEMS_tasks since a task
110 *  cannot be deleted when segments are in use.
111 */
112
113/*
114 *  _RTEMS_tasks_MP_Send_extract_proxy
115 *
116 *  This routine is invoked when a task is deleted and it
117 *  has a proxy which must be removed from a thread queue and
118 *  the remote node must be informed of this.
119 *
120 *  This routine is not needed since there are no objects
121 *  deleted by this manager.
122 *
123 */
124
125#ifdef __cplusplus
126}
127#endif
128
129/**@}*/
130
131#endif
132/* end of file */
Note: See TracBrowser for help on using the repository browser.