summaryrefslogtreecommitdiffstats
path: root/cpukit/score/include/rtems/score/coremsg.h
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2017-12-23 18:18:56 +1100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2018-01-25 08:45:26 +0100
commit2afb22b7e1ebcbe40373ff7e0efae7d207c655a9 (patch)
tree44759efe9374f13200a97e96d91bd9a2b7e5ce2a /cpukit/score/include/rtems/score/coremsg.h
parentMAINTAINERS: Add myself to Write After Approval. (diff)
downloadrtems-2afb22b7e1ebcbe40373ff7e0efae7d207c655a9.tar.bz2
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.
Diffstat (limited to 'cpukit/score/include/rtems/score/coremsg.h')
-rw-r--r--cpukit/score/include/rtems/score/coremsg.h185
1 files changed, 0 insertions, 185 deletions
diff --git a/cpukit/score/include/rtems/score/coremsg.h b/cpukit/score/include/rtems/score/coremsg.h
deleted file mode 100644
index 8d25529fdc..0000000000
--- a/cpukit/score/include/rtems/score/coremsg.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/**
- * @file rtems/score/coremsg.h
- *
- * @brief Constants and Structures Associated with the Message Queue Handler.
- *
- * This include file contains all the constants and structures associated
- * with the Message queue Handler.
- */
-
-/*
- * COPYRIGHT (c) 1989-2009.
- * On-Line Applications Research Corporation (OAR).
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rtems.org/license/LICENSE.
- */
-
-#ifndef _RTEMS_SCORE_COREMSG_H
-#define _RTEMS_SCORE_COREMSG_H
-
-#include <rtems/score/chain.h>
-#include <rtems/score/isrlock.h>
-#include <rtems/score/threadq.h>
-#include <rtems/score/watchdog.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ScoreMessageQueue Message Queue Handler
- *
- * @ingroup Score
- *
- * This handler encapsulates functionality which provides the foundation
- * Message Queue services used in all of the APIs supported by RTEMS.
- */
-/**@{*/
-
-#if defined(RTEMS_POSIX_API)
- /**
- * This macro is defined when an API is enabled that requires that the
- * Message Queue Handler include support for priority based enqueuing
- * of messages.
- */
- #define RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY
-#endif
-
-#if defined(RTEMS_POSIX_API)
- /**
- * This macro is defined when an API is enabled that requires that the
- * Message Queue Handler include support for notification of enqueuing
- * a message.
- */
- #define RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION
-#endif
-
-#if defined(RTEMS_POSIX_API)
- /**
- * This macro is defined when an API is enabled that requires the
- * Message Queue Handler include support for blocking send operations.
- */
- #define RTEMS_SCORE_COREMSG_ENABLE_BLOCKING_SEND
-#endif
-
-typedef struct CORE_message_queue_Control CORE_message_queue_Control;
-
-/**
- * @brief Data types needed to manipulate the contents of message buffers.
- *
- * The following defines the data types needed to manipulate
- * the contents of message buffers.
- *
- * @note The buffer field is normally longer than a single uint32_t
- * but since messages are variable length we just make a ptr to 1.
- */
-typedef struct {
- /** This field is the size of this message. */
- size_t size;
- /** This field contains the actual message. */
- uint32_t buffer[1];
-} CORE_message_queue_Buffer;
-
-/**
- * @brief The organization of a message buffer.
- *
- * The following records define the organization of a message
- * buffer.
- */
-typedef struct {
- /** This element allows this structure to be placed on chains. */
- Chain_Node Node;
- #if defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
- /** This field is the priority of this message. */
- int priority;
- #endif
- /** This field points to the contents of the message. */
- CORE_message_queue_Buffer Contents;
-} CORE_message_queue_Buffer_control;
-
-/**
- * @brief The possible blocking disciplines for a message queue.
- *
- * This enumerated types defines the possible blocking disciplines
- * for a message queue.
- */
-typedef enum {
- /** This value indicates that blocking tasks are in FIFO order. */
- CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO,
- /** This value indicates that blocking tasks are in priority order. */
- CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY
-} CORE_message_queue_Disciplines;
-
-#if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION)
- /**
- * @brief Type for a notification handler.
- *
- * The following defines the type for a Notification handler. A
- * notification handler is invoked when the message queue makes a
- * 0->1 transition on pending messages.
- */
- typedef void (*CORE_message_queue_Notify_Handler)(
- CORE_message_queue_Control *,
- Thread_queue_Context *
- );
-#endif
-
-/**
- * @brief Control block used to manage each message queue.
- *
- * The following defines the control block used to manage each
- * Message Queue.
- */
-struct CORE_message_queue_Control {
- /** This field is the Waiting Queue used to manage the set of tasks
- * which are blocked waiting to receive a message from this queue.
- */
- Thread_queue_Control Wait_queue;
-
- /**
- * @brief The thread queue operations according to the blocking discipline.
- */
- const Thread_queue_Operations *operations;
-
- /** This element is maximum number of messages which may be pending
- * at any given time.
- */
- uint32_t maximum_pending_messages;
- /** This element is the number of messages which are currently pending.
- */
- uint32_t number_of_pending_messages;
- /** This is the size in bytes of the largest message which may be
- * sent via this queue.
- */
- size_t maximum_message_size;
- /** This chain is the set of pending messages. It may be ordered by
- * message priority or in FIFO order.
- */
- Chain_Control Pending_messages;
- /** This is the address of the memory allocated for message buffers.
- * It is allocated are part of message queue initialization and freed
- * as part of destroying it.
- */
- CORE_message_queue_Buffer *message_buffers;
- #if defined(RTEMS_SCORE_COREMSG_ENABLE_NOTIFICATION)
- /** This is the routine invoked when the message queue transitions
- * from zero (0) messages pending to one (1) message pending.
- */
- CORE_message_queue_Notify_Handler notify_handler;
- #endif
- /** This chain is the set of inactive messages. A message is inactive
- * when it does not contain a pending message.
- */
- Chain_Control Inactive_messages;
-};
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */