summaryrefslogtreecommitdiffstats
path: root/cpukit/rtems
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/rtems
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/rtems')
-rw-r--r--cpukit/rtems/Makefile.am55
-rw-r--r--cpukit/rtems/include/rtems.h192
-rw-r--r--cpukit/rtems/include/rtems/rtems/asr.h156
-rw-r--r--cpukit/rtems/include/rtems/rtems/asrimpl.h99
-rw-r--r--cpukit/rtems/include/rtems/rtems/attr.h191
-rw-r--r--cpukit/rtems/include/rtems/rtems/attrimpl.h263
-rw-r--r--cpukit/rtems/include/rtems/rtems/barrier.h173
-rw-r--r--cpukit/rtems/include/rtems/rtems/barrierimpl.h92
-rw-r--r--cpukit/rtems/include/rtems/rtems/cache.h370
-rw-r--r--cpukit/rtems/include/rtems/rtems/clock.h318
-rw-r--r--cpukit/rtems/include/rtems/rtems/config.h142
-rw-r--r--cpukit/rtems/include/rtems/rtems/dpmem.h179
-rw-r--r--cpukit/rtems/include/rtems/rtems/dpmemimpl.h85
-rw-r--r--cpukit/rtems/include/rtems/rtems/event.h526
-rw-r--r--cpukit/rtems/include/rtems/rtems/eventimpl.h146
-rw-r--r--cpukit/rtems/include/rtems/rtems/eventmp.h101
-rw-r--r--cpukit/rtems/include/rtems/rtems/intr.h373
-rw-r--r--cpukit/rtems/include/rtems/rtems/message.h270
-rw-r--r--cpukit/rtems/include/rtems/rtems/messageimpl.h120
-rw-r--r--cpukit/rtems/include/rtems/rtems/modes.h132
-rw-r--r--cpukit/rtems/include/rtems/rtems/modesimpl.h146
-rw-r--r--cpukit/rtems/include/rtems/rtems/mp.h54
-rw-r--r--cpukit/rtems/include/rtems/rtems/msgmp.h211
-rw-r--r--cpukit/rtems/include/rtems/rtems/object.h370
-rw-r--r--cpukit/rtems/include/rtems/rtems/options.h83
-rw-r--r--cpukit/rtems/include/rtems/rtems/optionsimpl.h67
-rw-r--r--cpukit/rtems/include/rtems/rtems/part.h174
-rw-r--r--cpukit/rtems/include/rtems/rtems/partimpl.h223
-rw-r--r--cpukit/rtems/include/rtems/rtems/partmp.h144
-rw-r--r--cpukit/rtems/include/rtems/rtems/ratemon.h430
-rw-r--r--cpukit/rtems/include/rtems/rtems/ratemonimpl.h158
-rw-r--r--cpukit/rtems/include/rtems/rtems/region.h298
-rw-r--r--cpukit/rtems/include/rtems/rtems/regionimpl.h142
-rw-r--r--cpukit/rtems/include/rtems/rtems/sem.h278
-rw-r--r--cpukit/rtems/include/rtems/rtems/semimpl.h120
-rw-r--r--cpukit/rtems/include/rtems/rtems/semmp.h171
-rw-r--r--cpukit/rtems/include/rtems/rtems/signal.h83
-rw-r--r--cpukit/rtems/include/rtems/rtems/signalimpl.h51
-rw-r--r--cpukit/rtems/include/rtems/rtems/signalmp.h98
-rw-r--r--cpukit/rtems/include/rtems/rtems/smp.h78
-rw-r--r--cpukit/rtems/include/rtems/rtems/status.h263
-rw-r--r--cpukit/rtems/include/rtems/rtems/statusimpl.h64
-rw-r--r--cpukit/rtems/include/rtems/rtems/support.h170
-rw-r--r--cpukit/rtems/include/rtems/rtems/taskmp.h132
-rw-r--r--cpukit/rtems/include/rtems/rtems/tasks.h716
-rw-r--r--cpukit/rtems/include/rtems/rtems/tasksimpl.h131
-rw-r--r--cpukit/rtems/include/rtems/rtems/timer.h384
-rw-r--r--cpukit/rtems/include/rtems/rtems/timerimpl.h209
-rw-r--r--cpukit/rtems/include/rtems/rtems/types.h235
-rw-r--r--cpukit/rtems/mainpage.h927
-rw-r--r--cpukit/rtems/preinstall.am222
51 files changed, 0 insertions, 10815 deletions
diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am
index da6e302e2e..b8694b8022 100644
--- a/cpukit/rtems/Makefile.am
+++ b/cpukit/rtems/Makefile.am
@@ -6,63 +6,9 @@ librtems_a_CPPFLAGS = $(AM_CPPFLAGS)
# include
-include_HEADERS = include/rtems.h
-
# include/rtems/rtems
-include_rtems_rtemsdir = $(includedir)/rtems/rtems
-include_rtems_rtems_HEADERS =
-
-include_rtems_rtems_HEADERS += include/rtems/rtems/asr.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/asrimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/attr.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/attrimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/barrier.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/barrierimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/cache.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/clock.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/config.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/dpmem.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/dpmemimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/event.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/eventimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/intr.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/message.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/messageimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/modes.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/modesimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/object.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/options.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/optionsimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/part.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/partimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/ratemon.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/ratemonimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/region.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/regionimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/sem.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/semimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/signal.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/signalimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/smp.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/status.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/statusimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/support.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/tasks.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/tasksimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/timer.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/timerimpl.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/types.h
-include_rtems_rtems_HEADERS += mainpage.h
-
if HAS_MP
## We only build multiprocessing related files if HAS_MP was defined
-include_rtems_rtems_HEADERS += include/rtems/rtems/eventmp.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/mp.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/msgmp.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/partmp.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/semmp.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/signalmp.h
-include_rtems_rtems_HEADERS += include/rtems/rtems/taskmp.h
endif
## src
@@ -252,5 +198,4 @@ librtems_a_SOURCES += src/signalmp.c
librtems_a_SOURCES += src/taskmp.c
endif
-include $(srcdir)/preinstall.am
include $(top_srcdir)/automake/local.am
diff --git a/cpukit/rtems/include/rtems.h b/cpukit/rtems/include/rtems.h
deleted file mode 100644
index 8e536b449a..0000000000
--- a/cpukit/rtems/include/rtems.h
+++ /dev/null
@@ -1,192 +0,0 @@
-/**
- * @file
- *
- * @defgroup ClassicRTEMS RTEMS Classic API
- *
- * @brief RTEMS Classic API
- *
- * the Public Interface to the RTEMS Classic API
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_H
-#define _RTEMS_H
-
-/**
- * @defgroup ClassicRTEMS RTEMS Classic API
- *
- * RTEMS Classic API definitions and modules.
- */
-/**@{*/
-
-#include <rtems/system.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/types.h>
-
-#include <rtems/config.h>
-#include <rtems/init.h>
-#include <rtems/rtems/options.h>
-#include <rtems/rtems/tasks.h>
-#include <rtems/rtems/intr.h>
-#include <rtems/rtems/barrier.h>
-#include <rtems/rtems/cache.h>
-#include <rtems/rtems/clock.h>
-#include <rtems/extension.h>
-#include <rtems/rtems/timer.h>
-#include <rtems/rtems/sem.h>
-#include <rtems/rtems/message.h>
-#include <rtems/rtems/event.h>
-#include <rtems/rtems/signal.h>
-#include <rtems/rtems/event.h>
-#include <rtems/rtems/object.h>
-#include <rtems/rtems/part.h>
-#include <rtems/rtems/region.h>
-#include <rtems/rtems/dpmem.h>
-#include <rtems/io.h>
-#include <rtems/fatal.h>
-#include <rtems/rtems/ratemon.h>
-#if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/rtems/mp.h>
-#endif
-#include <rtems/rtems/smp.h>
-
-#include <rtems/rtems/support.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief Returns the pointer to the RTEMS version string.
- */
-const char *rtems_get_version_string(void);
-
-/**
- * @brief Indicates whether this processor variant has hardware floating point
- * support.
- */
-#define RTEMS_HAS_HARDWARE_FP CPU_HARDWARE_FP
-
-/**********************************************************************
- * CONSTANTS WHICH MAY BE USED IN OBJECT NAME TO ID SEARCHES
- **********************************************************************/
-
-/**
- * @brief Indicates that a search is across all nodes.
- */
-#define RTEMS_SEARCH_ALL_NODES OBJECTS_SEARCH_ALL_NODES
-
-/**
- * @brief Indicates that a search is across all nodes except the one the call
- * is made from.
- */
-#define RTEMS_SEARCH_OTHER_NODES OBJECTS_SEARCH_OTHER_NODES
-
-/**
- * @brief Indicates that the search is to be restricted to the local node.
- */
-#define RTEMS_SEARCH_LOCAL_NODE OBJECTS_SEARCH_LOCAL_NODE
-
-/**
- * @brief Indicates that the caller wants to obtain the name of the currently
- * executing thread.
- *
- * This constant is only meaningful when obtaining the name of a task.
- */
-#define RTEMS_WHO_AM_I OBJECTS_WHO_AM_I
-
-/**********************************************************************
- * Parameters and return Id's for _Objects_Get_next
- **********************************************************************/
-
-/**
- * @brief Lowest valid index value for the index portion of an object
- * identifier.
- */
-#define RTEMS_OBJECT_ID_INITIAL_INDEX OBJECTS_ID_INITIAL_INDEX
-
-/**
- * @brief Maximum valid index value for the index portion of an object
- * identifier.
- */
-#define RTEMS_OBJECT_ID_FINAL_INDEX OBJECTS_ID_FINAL_INDEX
-
-/**
- * @brief Returns the identifier of the object with the lowest valid index
- * value.
- *
- * The object is specified by the API @a _api, the object class @a _class and
- * the node @a _node where the object resides.
- */
-#define RTEMS_OBJECT_ID_INITIAL(_api, _class, _node) \
- OBJECTS_ID_INITIAL(_api, _class, _node)
-
-/**
- * @brief Maximum valid object identifier.
- */
-#define RTEMS_OBJECT_ID_FINAL OBJECTS_ID_FINAL
-
-/**
- * @brief Minimum stack size which every thread must exceed.
- *
- * It is the minimum stack size recommended for use on this processor. This
- * value is selected by the RTEMS developers conservatively to minimize the
- * risk of blown stacks for most user applications. Using this constant when
- * specifying the task stack size, indicates that the stack size will be at
- * least RTEMS_MINIMUM_STACK_SIZE bytes in size. If the user configured minimum
- * stack size is larger than the recommended minimum, then it will be used.
- */
-#define RTEMS_MINIMUM_STACK_SIZE STACK_MINIMUM_SIZE
-
-/**
- * @brief Specifies that the task should be created with the configured minimum
- * stack size.
- *
- * Using this constant when specifying the task stack size indicates that this
- * task is to be created with a stack size of the minimum stack size that was
- * configured by the application. If not explicitly configured by the
- * application, the default configured minimum stack size is the processor
- * dependent value RTEMS_MINIMUM_STACK_SIZE. Since this uses the configured
- * minimum stack size value, you may get a stack size that is smaller or larger
- * than the recommended minimum. This can be used to provide large stacks for
- * all tasks on complex applications or small stacks on applications that are
- * trying to conserve memory.
- */
-#define RTEMS_CONFIGURED_MINIMUM_STACK_SIZE 0
-
-/**
- * @brief Constant for indefinite wait.
- *
- * This is actually an illegal interval value.
- */
-#define RTEMS_NO_TIMEOUT ((rtems_interval) WATCHDOG_NO_TIMEOUT)
-
-/**
- * @brief An MPCI must support packets of at least this size.
- */
-#define RTEMS_MINIMUM_PACKET_SIZE MP_PACKET_MINIMUM_PACKET_SIZE
-
-/**
- * @brief Defines the count of @c uint32_t numbers in a packet which must be
- * converted to native format in a heterogeneous system.
- *
- * In packets longer than this value, some of the extra data may be a user
- * message buffer which is not automatically endian swapped.
- */
-#define RTEMS_MINIMUN_HETERO_CONVERSION MP_PACKET_MINIMUN_HETERO_CONVERSION
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/asr.h b/cpukit/rtems/include/rtems/rtems/asr.h
deleted file mode 100644
index edd5e2fe62..0000000000
--- a/cpukit/rtems/include/rtems/rtems/asr.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * @file rtems/rtems/asr.h
- *
- * @defgroup ClassicASR ASR Support
- *
- * @ingroup ClassicRTEMS
- * @brief Asynchronous Signal Handler
- *
- * This include file contains all the constants and structures associated
- * with the Asynchronous Signal Handler. This Handler provides the low-level
- * support required by the Signal Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_ASR_H
-#define _RTEMS_RTEMS_ASR_H
-
-#include <rtems/rtems/modes.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicASR ASR Support
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Signal
- * Manager.
- */
-/**@{*/
-
-/**
- * The following type defines the control block used to manage
- * each signal set.
- */
-typedef uint32_t rtems_signal_set;
-
-/**
- * Return type for ASR Handler
- */
-typedef void rtems_asr;
-
-/**
- * The following type corresponds to the applications asynchronous
- * signal processing routine.
- */
-typedef rtems_asr ( *rtems_asr_entry )(
- rtems_signal_set
- );
-
-/**
- * The following defines the control structure used to manage
- * signals. Each thread has a copy of this record.
- */
-typedef struct {
- /** This field indicates if are ASRs enabled currently. */
- bool is_enabled;
- /** This field indicates if address of the signal handler function. */
- rtems_asr_entry handler;
- /** This field indicates if the task mode the signal will run with. */
- Modes_Control mode_set;
- /** This field indicates the signal set that is posted. */
- rtems_signal_set signals_posted;
- /** This field indicates the signal set that is pending. */
- rtems_signal_set signals_pending;
- /** This field indicates if nest level of signals being processed */
- uint32_t nest_level;
-} ASR_Information;
-
-/*
- * The following constants define the individual signals which may
- * be used to compose a signal set.
- */
-
-/** This defines the bit in the signal set associated with signal 0. */
-#define RTEMS_SIGNAL_0 0x00000001
-/** This defines the bit in the signal set associated with signal 1. */
-#define RTEMS_SIGNAL_1 0x00000002
-/** This defines the bit in the signal set associated with signal 2. */
-#define RTEMS_SIGNAL_2 0x00000004
-/** This defines the bit in the signal set associated with signal 3. */
-#define RTEMS_SIGNAL_3 0x00000008
-/** This defines the bit in the signal set associated with signal 4. */
-#define RTEMS_SIGNAL_4 0x00000010
-/** This defines the bit in the signal set associated with signal 5. */
-#define RTEMS_SIGNAL_5 0x00000020
-/** This defines the bit in the signal set associated with signal 6. */
-#define RTEMS_SIGNAL_6 0x00000040
-/** This defines the bit in the signal set associated with signal 7. */
-#define RTEMS_SIGNAL_7 0x00000080
-/** This defines the bit in the signal set associated with signal 8. */
-#define RTEMS_SIGNAL_8 0x00000100
-/** This defines the bit in the signal set associated with signal 9. */
-#define RTEMS_SIGNAL_9 0x00000200
-/** This defines the bit in the signal set associated with signal 10. */
-#define RTEMS_SIGNAL_10 0x00000400
-/** This defines the bit in the signal set associated with signal 11. */
-#define RTEMS_SIGNAL_11 0x00000800
-/** This defines the bit in the signal set associated with signal 12. */
-#define RTEMS_SIGNAL_12 0x00001000
-/** This defines the bit in the signal set associated with signal 13. */
-#define RTEMS_SIGNAL_13 0x00002000
-/** This defines the bit in the signal set associated with signal 14. */
-#define RTEMS_SIGNAL_14 0x00004000
-/** This defines the bit in the signal set associated with signal 15. */
-#define RTEMS_SIGNAL_15 0x00008000
-/** This defines the bit in the signal set associated with signal 16. */
-#define RTEMS_SIGNAL_16 0x00010000
-/** This defines the bit in the signal set associated with signal 17. */
-#define RTEMS_SIGNAL_17 0x00020000
-/** This defines the bit in the signal set associated with signal 18. */
-#define RTEMS_SIGNAL_18 0x00040000
-/** This defines the bit in the signal set associated with signal 19. */
-#define RTEMS_SIGNAL_19 0x00080000
-/** This defines the bit in the signal set associated with signal 20. */
-#define RTEMS_SIGNAL_20 0x00100000
-/** This defines the bit in the signal set associated with signal 21. */
-#define RTEMS_SIGNAL_21 0x00200000
-/** This defines the bit in the signal set associated with signal 22. */
-#define RTEMS_SIGNAL_22 0x00400000
-/** This defines the bit in the signal set associated with signal 23. */
-#define RTEMS_SIGNAL_23 0x00800000
-/** This defines the bit in the signal set associated with signal 24. */
-#define RTEMS_SIGNAL_24 0x01000000
-/** This defines the bit in the signal set associated with signal 25. */
-#define RTEMS_SIGNAL_25 0x02000000
-/** This defines the bit in the signal set associated with signal 26. */
-#define RTEMS_SIGNAL_26 0x04000000
-/** This defines the bit in the signal set associated with signal 27. */
-#define RTEMS_SIGNAL_27 0x08000000
-/** This defines the bit in the signal set associated with signal 28. */
-#define RTEMS_SIGNAL_28 0x10000000
-/** This defines the bit in the signal set associated with signal 29. */
-#define RTEMS_SIGNAL_29 0x20000000
-/** This defines the bit in the signal set associated with signal 30. */
-#define RTEMS_SIGNAL_30 0x40000000
-/** This defines the bit in the signal set associated with signal 31. */
-#define RTEMS_SIGNAL_31 0x80000000
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/asrimpl.h b/cpukit/rtems/include/rtems/rtems/asrimpl.h
deleted file mode 100644
index 141c34d4bb..0000000000
--- a/cpukit/rtems/include/rtems/rtems/asrimpl.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicASRImpl
- *
- * @brief Classic ASR Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_ASRIMPL_H
-#define _RTEMS_RTEMS_ASRIMPL_H
-
-#include <rtems/rtems/asr.h>
-
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicASRImpl Classic ASR Implementation
- *
- * @ingroup ClassicASR
- *
- * @{
- */
-
-/**
- * @brief ASR_Initialize
- *
- * This routine initializes the given RTEMS_ASR information record.
- */
-RTEMS_INLINE_ROUTINE void _ASR_Initialize (
- ASR_Information *asr
-)
-{
- memset(asr, 0, sizeof(*asr));
-}
-
-/**
- * @brief ASR_Is_null_handler
- *
- * This function returns TRUE if the given asr_handler is NULL and
- * FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _ASR_Is_null_handler (
- rtems_asr_entry asr_handler
-)
-{
- return asr_handler == NULL;
-}
-
-RTEMS_INLINE_ROUTINE rtems_signal_set _ASR_Swap_signals( ASR_Information *asr )
-{
- rtems_signal_set new_signals_posted;
-
- new_signals_posted = asr->signals_pending;
- asr->signals_pending = asr->signals_posted;
- asr->signals_posted = new_signals_posted;
-
- return new_signals_posted;
-}
-
-RTEMS_INLINE_ROUTINE void _ASR_Post_signals(
- rtems_signal_set signals,
- rtems_signal_set *signal_set
-)
-{
- *signal_set |= signals;
-}
-
-RTEMS_INLINE_ROUTINE rtems_signal_set _ASR_Get_posted_signals(
- ASR_Information *asr
-)
-{
- rtems_signal_set signal_set;
-
- signal_set = asr->signals_posted;
- asr->signals_posted = 0;
-
- return signal_set;
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/attr.h b/cpukit/rtems/include/rtems/rtems/attr.h
deleted file mode 100644
index 7e8fa4818a..0000000000
--- a/cpukit/rtems/include/rtems/rtems/attr.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/**
- * @file rtems/rtems/attr.h
- *
- * @defgroup ClassicAttributes Attributes
- *
- * @ingroup ClassicRTEMS
- * @brief Object Attributes Handler
- *
- * This include file contains all information about the Object Attributes
- * Handler.
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_ATTR_H
-#define _RTEMS_RTEMS_ATTR_H
-
-#include <rtems/score/basedefs.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicAttributes Attributes
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality which defines and manages the
- * set of Classic API object attributes.
- */
-/**@{*/
-
-/**
- * This defines the type used to contain Classic API attributes. These
- * are primarily used when creating objects.
- */
-typedef uint32_t rtems_attribute;
-
-/** This is the default value for an attribute set. */
-
-#define RTEMS_DEFAULT_ATTRIBUTES 0x00000000
-
-/**
- * This is the attribute constant to indicate local resource.
- */
-#define RTEMS_LOCAL 0x00000000
-
-/**
- * This is the attribute constant to indicate global resource.
- */
-#define RTEMS_GLOBAL 0x00000002
-
-/**
- * This is the attribute constant which reflects that blocking
- * tasks will be managed using FIFO discipline.
- */
-#define RTEMS_FIFO 0x00000000
-
-/**
- * This is the attribute constant which reflects that blocking
- * tasks will be managed using task priority discipline.
- */
-#define RTEMS_PRIORITY 0x00000004
-
-/******************** RTEMS Task Specific Attributes *********************/
-
-/**
- * This attribute constant indicates that the task will not use the
- * floating point hardware. If the architecture permits it, then
- * the FPU will be disabled when the task is executing.
- */
-#define RTEMS_NO_FLOATING_POINT 0x00000000
-
-/**
- * This attribute constant indicates that the task will use the
- * floating point hardware. There will be a floating point
- * context associated with this task.
- */
-#define RTEMS_FLOATING_POINT 0x00000001
-
-/***************** RTEMS Semaphore Specific Attributes ********************/
-
-/**
- * This is the mask for the attribute bits associated with the
- * Classic API Semaphore Manager.
- */
-#define RTEMS_SEMAPHORE_CLASS 0x00000030
-
-/**
- * This attribute constant indicates that the Classic API Semaphore
- * instance created will be a counting semaphore.
- */
-#define RTEMS_COUNTING_SEMAPHORE 0x00000000
-
-/**
- * This attribute constant indicates that the Classic API Semaphore
- * instance created will be a proper binary semaphore or mutex.
- */
-#define RTEMS_BINARY_SEMAPHORE 0x00000010
-
-/**
- * This attribute constant indicates that the Classic API Semaphore
- * instance created will be a simple binary semaphore.
- */
-#define RTEMS_SIMPLE_BINARY_SEMAPHORE 0x00000020
-
-/**
- * This attribute constant indicates that the Classic API Semaphore
- * instance created will NOT use the Priority Inheritance Protocol.
- */
-#define RTEMS_NO_INHERIT_PRIORITY 0x00000000
-
-/**
- * This attribute constant indicates that the Classic API Semaphore
- * instance created will use the Priority Inheritance Protocol.
- *
- * @note The semaphore instance must be a binary semaphore.
- */
-#define RTEMS_INHERIT_PRIORITY 0x00000040
-
-/**
- * This attribute constant indicates that the Classic API Semaphore
- * instance created will NOT use the Priority Ceiling Protocol.
- */
-#define RTEMS_NO_PRIORITY_CEILING 0x00000000
-
-/**
- * This attribute constant indicates that the Classic API Semaphore
- * instance created will use the Priority Ceiling Protocol.
- *
- * @note The semaphore instance must be a binary semaphore.
- */
-#define RTEMS_PRIORITY_CEILING 0x00000080
-
-/**
- * This attribute constant indicates that the Classic API Semaphore instance
- * created will NOT use the Multiprocessor Resource Sharing Protocol.
- */
-#define RTEMS_NO_MULTIPROCESSOR_RESOURCE_SHARING 0x00000000
-
-/**
- * This attribute constant indicates that the Classic API Semaphore instance
- * created will use the Multiprocessor Resource Sharing Protocol.
- *
- * @note The semaphore instance must be a binary semaphore.
- */
-#define RTEMS_MULTIPROCESSOR_RESOURCE_SHARING 0x00000100
-
-/******************** RTEMS Barrier Specific Attributes ********************/
-
-/**
- * This attribute constant indicates that the Classic API Barrier
- * instance created will use an automatic release protocol.
- */
-#define RTEMS_BARRIER_AUTOMATIC_RELEASE 0x00000010
-
-/**
- * This attribute constant indicates that the Classic API Barrier
- * instance created will use the manual release protocol.
- */
-#define RTEMS_BARRIER_MANUAL_RELEASE 0x00000000
-
-/**************** RTEMS Internal Task Specific Attributes ****************/
-
-/**
- * This attribute constant indicates that the task was created
- * by the application using normal Classic API methods.
- */
-#define RTEMS_APPLICATION_TASK 0x00000000
-
-/**
- * This attribute constant indicates that the task was created
- * by RTEMS as a support task.
- */
-#define RTEMS_SYSTEM_TASK 0x00008000
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/attrimpl.h b/cpukit/rtems/include/rtems/rtems/attrimpl.h
deleted file mode 100644
index bb8e5f8f58..0000000000
--- a/cpukit/rtems/include/rtems/rtems/attrimpl.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicAttributesImpl
- *
- * @brief Classic Attributes Implementation
- */
-
-/*
- * COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_ATTR_INL
-#define _RTEMS_RTEMS_ATTR_INL
-
-#include <rtems/rtems/attr.h>
-#include <rtems/score/cpu.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicAttributesImpl Classic Attributes Implementation
- *
- * @ingroup ClassicAttributes
- *
- * @{
- */
-
-/****************** Forced Attributes in Configuration ****************/
-
-/**
- * This attribute constant indicates the attributes that are not
- * supportable given the hardware configuration.
- */
-#define ATTRIBUTES_NOT_SUPPORTED 0
-
-/**
- * This attribute constant indicates the attributes that are
- * required given the hardware configuration.
- */
-#if ( CPU_ALL_TASKS_ARE_FP == TRUE )
-#define ATTRIBUTES_REQUIRED RTEMS_FLOATING_POINT
-#else
-#define ATTRIBUTES_REQUIRED 0
-#endif
-
-/**
- * @brief Sets the requested new_attributes in the attribute_set passed in.
- *
- * This function sets the requested new_attributes in the attribute_set
- * passed in. The result is returned to the user.
- */
-RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Set (
- rtems_attribute new_attributes,
- rtems_attribute attribute_set
-)
-{
- return attribute_set | new_attributes;
-}
-
-/**
- * @brief Clears the requested new_attributes in the attribute_set
- * passed in.
- *
- * This function clears the requested new_attributes in the attribute_set
- * passed in. The result is returned to the user.
- */
-RTEMS_INLINE_ROUTINE rtems_attribute _Attributes_Clear (
- rtems_attribute attribute_set,
- rtems_attribute mask
-)
-{
- return attribute_set & ~mask;
-}
-
-/**
- * @brief Checks if the floating point attribute is
- * enabled in the attribute_set.
- *
- * This function returns TRUE if the floating point attribute is
- * enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_floating_point(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_FLOATING_POINT ) ? true : false;
-}
-
-#if defined(RTEMS_MULTIPROCESSING)
-/**
- * @brief Checks if the global object attribute is enabled in
- * the attribute_set.
- *
- * This function returns TRUE if the global object attribute is
- * enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_global(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_GLOBAL ) ? true : false;
-}
-#endif
-
-/**
- * @brief Checks if the priority attribute is enabled in the attribute_set.
- *
- * This function returns TRUE if the priority attribute is
- * enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_PRIORITY ) ? true : false;
-}
-
-/**
- * @brief Checks if the binary semaphore attribute is
- * enabled in the attribute_set.
- *
- * This function returns TRUE if the binary semaphore attribute is
- * enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore(
- rtems_attribute attribute_set
-)
-{
- return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE);
-}
-
-/**
- * @brief Checks if the simple binary semaphore attribute is
- * enabled in the attribute_set
- *
- * This function returns TRUE if the simple binary semaphore attribute is
- * enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_simple_binary_semaphore(
- rtems_attribute attribute_set
-)
-{
- return
- ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_SIMPLE_BINARY_SEMAPHORE);
-}
-
-/**
- * @brief Checks if the counting semaphore attribute is
- * enabled in the attribute_set
- *
- * This function returns TRUE if the counting semaphore attribute is
- * enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore(
- rtems_attribute attribute_set
-)
-{
- return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE);
-}
-
-/**
- * @brief Checks if the priority inheritance attribute
- * is enabled in the attribute_set
- *
- * This function returns TRUE if the priority inheritance attribute
- * is enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_inherit_priority(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_INHERIT_PRIORITY ) ? true : false;
-}
-
-/**
- * @brief Returns true if the attribute set has at most one protocol, and false
- * otherwise.
- *
- * The protocols are RTEMS_INHERIT_PRIORITY, RTEMS_PRIORITY_CEILING and
- * RTEMS_MULTIPROCESSOR_RESOURCE_SHARING.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Has_at_most_one_protocol(
- rtems_attribute attribute_set
-)
-{
- attribute_set &= RTEMS_INHERIT_PRIORITY | RTEMS_PRIORITY_CEILING
- | RTEMS_MULTIPROCESSOR_RESOURCE_SHARING;
-
- return ( attribute_set & ( attribute_set - 1 ) ) == 0;
-}
-
-/**
- * @brief Checks if the priority ceiling attribute
- * is enabled in the attribute_set
- *
- * This function returns TRUE if the priority ceiling attribute
- * is enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_priority_ceiling(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_PRIORITY_CEILING ) ? true : false;
-}
-
-/**
- * @brief Checks if the Multiprocessor Resource Sharing Protocol attribute
- * is enabled in the attribute_set
- *
- * This function returns TRUE if the Multiprocessor Resource Sharing Protocol
- * attribute is enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_multiprocessor_resource_sharing(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_MULTIPROCESSOR_RESOURCE_SHARING ) != 0;
-}
-
-/**
- * @brief Checks if the barrier automatic release
- * attribute is enabled in the attribute_set
- *
- * This function returns TRUE if the barrier automatic release
- * attribute is enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_barrier_automatic(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_BARRIER_AUTOMATIC_RELEASE ) ? true : false;
-}
-
-/**
- * @brief Checks if the system task attribute
- * is enabled in the attribute_set.
- *
- * This function returns TRUE if the system task attribute
- * is enabled in the attribute_set and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Attributes_Is_system_task(
- rtems_attribute attribute_set
-)
-{
- return ( attribute_set & RTEMS_SYSTEM_TASK ) ? true : false;
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/barrier.h b/cpukit/rtems/include/rtems/rtems/barrier.h
deleted file mode 100644
index 2eea90fa41..0000000000
--- a/cpukit/rtems/include/rtems/rtems/barrier.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/**
- * @file rtems/rtems/barrier.h
- *
- * @defgroup ClassicBarrier Barriers
- *
- * @ingroup ClassicRTEMS
- * @brief Classic API Barrier Manager
- *
- * This include file contains all the constants and structures associated
- * with the Barrier Manager.
- *
- * Directives provided are:
- *
- * - create a barrier
- * - get an ID of a barrier
- * - delete a barrier
- * - wait for a barrier
- * - signal a barrier
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_BARRIER_H
-#define _RTEMS_RTEMS_BARRIER_H
-
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/attr.h>
-#include <rtems/score/object.h>
-#include <rtems/score/corebarrier.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicBarrier Barriers
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality which implements the Classic API
- * Barrier Manager.
- */
-/**@{*/
-
-/**
- * This type defines the control block used to manage each barrier.
- */
-typedef struct {
- /** This is used to manage a barrier as an object. */
- Objects_Control Object;
- /** This is used to implement the barrier. */
- CORE_barrier_Control Barrier;
- /** This is used to specify the attributes of a barrier. */
- rtems_attribute attribute_set;
-} Barrier_Control;
-
-/**
- * @brief RTEMS Create Barrier
- *
- * Barrier Manager -- Create a Barrier Instance
- *
- * This routine implements the rtems_barrier_create directive. The
- * barrier will have the name name. The starting count for
- * the barrier is count. The attribute_set determines if
- * the barrier is global or local and the thread queue
- * discipline. It returns the id of the created barrier in ID.
- *
- * @param[in] name is the name of this barrier instance.
- * @param[in] attribute_set specifies the attributes of this barrier instance.
- * @param[in] maximum_waiters is the maximum number of threads which will
- * be allowed to concurrently wait at the barrier.
- * @param[out] id will contain the id of this barrier.
- *
- * @retval a status code indicating success or the reason for failure.
- */
-rtems_status_code rtems_barrier_create(
- rtems_name name,
- rtems_attribute attribute_set,
- uint32_t maximum_waiters,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Barrier name to Id
- *
- * This routine implements the rtems_barrier_ident directive.
- * This directive returns the barrier ID associated with name.
- * If more than one barrier is named name, then the barrier
- * to which the ID belongs is arbitrary. node indicates the
- * extent of the search for the ID of the barrier named name.
- * The search can be limited to a particular node or allowed to
- * encompass all nodes.
- *
- * @param[in] name is the name of this barrier instance.
- * @param[out] id will contain the id of this barrier.
- *
- * @retval a status code indicating success or the reason for failure.
- */
-rtems_status_code rtems_barrier_ident(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Delete Barrier
- *
- * This routine implements the rtems_barrier_delete directive. The
- * barrier indicated by @a id is deleted. The barrier is freed back to the
- * inactive barrier chain.
- *
- *
- * @param[in] id indicates the barrier to delete
- *
- * @retval a status code indicating success or the reason for failure.
- */
-rtems_status_code rtems_barrier_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Barrier Wait
- *
- * This routine implements the rtems_barrier_wait directive. It
- * attempts to wait at the barrier associated with @a id. The calling task
- * may block waiting for the barrier with an optional timeout of @a timeout
- * clock ticks.
- *
- * @param[in] id indicates the barrier to wait at.
- * @param[in] timeout is the maximum length of time in ticks the calling
- * thread is willing to block.
- *
- * @retval a status code indicating success or the reason for failure.
- */
-rtems_status_code rtems_barrier_wait(
- rtems_id id,
- rtems_interval timeout
-);
-
-/**
- * @brief RTEMS Barrier Release
- *
- * Barrier Manager -- Release Tasks Waitng at a Barrier
- *
- * This routine implements the rtems_barrier_release directive. It
- * unblocks all of the threads waiting on the barrier associated with
- * @a id. The number of threads unblocked is returned in @a released.
- *
- *
- * @param[in] id indicates the barrier to wait at.
- * @param[out] released will contain the number of threads unblocked.
- *
- * @retval a status code indicating success or the reason for failure.
- */
-rtems_status_code rtems_barrier_release(
- rtems_id id,
- uint32_t *released
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/barrierimpl.h b/cpukit/rtems/include/rtems/rtems/barrierimpl.h
deleted file mode 100644
index f0b53e0cab..0000000000
--- a/cpukit/rtems/include/rtems/rtems/barrierimpl.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/**
- * @file rtems/rtems/barrier.inl
- *
- * @defgroup ClassicBarrier Barriers
- *
- * @ingroup ClassicRTEMS
- * @brief Inline Implementation from Barrier Manager
- *
- * This file contains the static inlin implementation of the inlined
- * routines from the Barrier Manager.
- */
-
-/*
- * COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_BARRIERIMPL_H
-#define _RTEMS_RTEMS_BARRIERIMPL_H
-
-#include <rtems/rtems/barrier.h>
-#include <rtems/score/corebarrierimpl.h>
-#include <rtems/score/objectimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicBarrierImpl Classic Barrier Implementation
- *
- * @ingroup ClassicBarrier
- *
- * @{
- */
-
-/**
- * The following defines the information control block used to manage
- * this class of objects.
- */
-extern Objects_Information _Barrier_Information;
-
-/**
- * @brief _Barrier_Allocate
- *
- * This function allocates a barrier control block from
- * the inactive chain of free barrier control blocks.
- */
-RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Allocate( void )
-{
- return (Barrier_Control *) _Objects_Allocate( &_Barrier_Information );
-}
-
-/**
- * @brief _Barrier_Free
- *
- * This routine frees a barrier control block to the
- * inactive chain of free barrier control blocks.
- */
-RTEMS_INLINE_ROUTINE void _Barrier_Free (
- Barrier_Control *the_barrier
-)
-{
- _CORE_barrier_Destroy( &the_barrier->Barrier );
- _Objects_Free( &_Barrier_Information, &the_barrier->Object );
-}
-
-RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Get(
- Objects_Id id,
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Context_initialize( queue_context );
- return (Barrier_Control *) _Objects_Get(
- id,
- &queue_context->Lock_context.Lock_context,
- &_Barrier_Information
- );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/cache.h b/cpukit/rtems/include/rtems/rtems/cache.h
deleted file mode 100644
index f1dc9bf03d..0000000000
--- a/cpukit/rtems/include/rtems/rtems/cache.h
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicCache
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_CACHE_H
-#define _RTEMS_RTEMS_CACHE_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtems/system.h>
-#include <sys/types.h>
-
-/**
- * @defgroup ClassicCache Cache
- *
- * @ingroup ClassicRTEMS
- *
- * @brief The Cache Manager provides functions to perform maintenance
- * operations for data and instruction caches.
- *
- * The actual actions of the Cache Manager operations depend on the hardware
- * and the implementation provided by the CPU architecture port or a board
- * support package. Cache implementations tend to be highly hardware
- * dependent.
- *
- * @{
- */
-
-/**
- * @brief Returns the data cache line size in bytes.
- *
- * For multi-level caches this is the maximum of the cache line sizes of all
- * levels.
- *
- * @retval 0 No data cache is present.
- * @retval positive The data cache line size in bytes.
- */
-size_t rtems_cache_get_data_line_size( void );
-
-/**
- * @brief Returns the instruction cache line size in bytes.
- *
- * For multi-level caches this is the maximum of the cache line sizes of all
- * levels.
- *
- * @retval 0 No instruction cache is present.
- * @retval positive The instruction cache line size in bytes.
- */
-size_t rtems_cache_get_instruction_line_size( void );
-
-/**
- * @brief Returns the maximal cache line size of all cache kinds in bytes.
- *
- * Returns computed or obtained maximal cache line size of all
- * all caches in the system.
- *
- * @retval 0 No cache is present
- * @retval positive The maximal cache line size in bytes.
- */
-size_t rtems_cache_get_maximal_line_size( void );
-
-/**
- * @brief Returns the data cache size in bytes.
- *
- * @param[in] level The cache level of interest. The cache level zero
- * specifies the entire data cache.
- *
- * @returns The data cache size in bytes of the specified level.
- */
-size_t rtems_cache_get_data_cache_size( uint32_t level );
-
-/**
- * @brief Returns the instruction cache size in bytes.
- *
- * @param[in] level The cache level of interest. The cache level zero
- * specifies the entire instruction cache.
- *
- * @returns The instruction cache size in bytes of the specified level.
- */
-size_t rtems_cache_get_instruction_cache_size( uint32_t level );
-
-/**
- * @brief Flushes multiple data cache lines.
- *
- * Dirty cache lines covering the area are transfered to memory. Depending on
- * the cache implementation this may mark the lines as invalid.
- *
- * @param[in] addr The start address of the area to flush.
- * @param[in] size The size in bytes of the area to flush.
- */
-void rtems_cache_flush_multiple_data_lines( const void *addr, size_t size );
-
-/**
- * @brief Invalidates multiple data cache lines.
- *
- * The cache lines covering the area are marked as invalid. A later read
- * access in the area will load the data from memory.
- *
- * In case the area is not aligned on cache line boundaries, then this
- * operation may destroy unrelated data.
- *
- * @param[in] addr The start address of the area to invalidate.
- * @param[in] size The size in bytes of the area to invalidate.
- */
-void rtems_cache_invalidate_multiple_data_lines(
- const void *addr,
- size_t size
-);
-
-/**
- * @brief Invalidates multiple instruction cache lines.
- *
- * The cache lines covering the area are marked as invalid. A later
- * instruction fetch from the area will result in a load from memory.
- * In SMP mode, on processors without instruction cache snooping, this
- * operation will invalidate the instruction cache lines on all processors.
- * It should not be called from interrupt context in such case.
- *
- * @param[in] addr The start address of the area to invalidate.
- * @param[in] size The size in bytes of the area to invalidate.
- */
-void rtems_cache_invalidate_multiple_instruction_lines(
- const void *addr,
- size_t size
-);
-
-
-/**
- * @brief Ensure necessary synchronization required after code changes
- *
- * When code is loaded or modified then many Harvard cache equipped
- * systems require synchronization of main memory and or updated
- * code in data cache to ensure visibility of change in all
- * connected CPUs instruction memory view. This operation
- * should be used by run time loader for example.
- *
- * @param[in] addr The start address of the area to invalidate.
- * @param[in] size The size in bytes of the area to invalidate.
- */
-void rtems_cache_instruction_sync_after_code_change(
- const void * code_addr,
- size_t n_bytes
-);
-
-/**
- * @brief Flushes the entire data cache.
- *
- * @see rtems_cache_flush_multiple_data_lines().
- */
-void rtems_cache_flush_entire_data( void );
-
-/**
- * @brief Invalidates the entire instruction cache.
- *
- * @see rtems_cache_invalidate_multiple_instruction_lines().
- */
-void rtems_cache_invalidate_entire_instruction( void );
-
-/**
- * This function is responsible for performing a data cache
- * invalidate. It invalidates the entire cache.
- */
-void rtems_cache_invalidate_entire_data( void );
-
-/**
- * This function freezes the data cache.
- */
-void rtems_cache_freeze_data( void );
-
-/**
- * This function unfreezes the data cache.
- */
-void rtems_cache_unfreeze_data( void );
-
-/**
- * This function enables the data cache.
- */
-void rtems_cache_enable_data( void );
-
-/**
- * This function disables the data cache.
- */
-void rtems_cache_disable_data( void );
-
-/**
- * This function freezes the instruction cache.
- */
-void rtems_cache_freeze_instruction( void );
-
-/**
- * This function unfreezes the instruction cache.
- */
-void rtems_cache_unfreeze_instruction( void );
-
-/**
- * This function enables the instruction cache.
- */
-void rtems_cache_enable_instruction( void );
-
-/**
- * This function disables the instruction cache.
- */
-void rtems_cache_disable_instruction( void );
-
-/**
- * This function is used to allocate storage that spans an
- * integral number of cache blocks.
- */
-void *rtems_cache_aligned_malloc ( size_t nbytes );
-
-/**
- * @brief Allocates a memory area of size @a size bytes from cache coherent
- * memory.
- *
- * A size value of zero will return a unique address which may be freed with
- * rtems_cache_coherent_free().
- *
- * The memory allocated by this function can be released with a call to
- * rtems_cache_coherent_free().
- *
- * By default the C program heap allocator is used. In case special memory
- * areas must be used, then the BSP or the application must add cache coherent
- * memory areas for the allocator via rtems_cache_coherent_add_area().
- *
- * This function must be called from driver initialization or task context
- * only.
- *
- * @param[in] alignment If the alignment parameter is not equal to zero, the
- * allocated memory area will begin at an address aligned by this value.
- * @param[in] boundary If the boundary parameter is not equal to zero, the
- * allocated memory area will comply with a boundary constraint. The
- * boundary value specifies the set of addresses which are aligned by the
- * boundary value. The interior of the allocated memory area will not
- * contain an element of this set. The begin or end address of the area may
- * be a member of the set.
- *
- * @retval NULL If no memory is available or the parameters are inconsistent.
- * @retval other A pointer to the begin of the allocated memory area.
- */
-void *rtems_cache_coherent_allocate(
- size_t size,
- uintptr_t alignment,
- uintptr_t boundary
-);
-
-/**
- * @brief Frees memory allocated by rtems_cache_coherent_allocate().
- *
- * This function must be called from driver initialization or task context
- * only.
- *
- * @param[in] ptr A pointer returned by rtems_cache_coherent_allocate().
- */
-void rtems_cache_coherent_free( void *ptr );
-
-/**
- * @brief Adds a cache coherent memory area to the cache coherent allocator.
- *
- * This function must be called from BSP initialization, driver initialization
- * or task context only.
- *
- * @param[in] area_begin The area begin address.
- * @param[in] area_size The area size in bytes.
- *
- * @see rtems_cache_coherent_allocate().
- */
-void rtems_cache_coherent_add_area(
- void *area_begin,
- uintptr_t area_size
-);
-
-#if defined( RTEMS_SMP )
-
-/**
- * @brief Flushes multiple data cache lines for a set of processors
- *
- * Dirty cache lines covering the area are transferred to memory.
- * Depending on the cache implementation this may mark the lines as invalid.
- *
- * This operation should not be called from interrupt context.
- *
- * @param[in] addr The start address of the area to flush.
- * @param[in] size The size in bytes of the area to flush.
- * @param[in] setsize The size of the processor set.
- * @param[in] set The target processor set.
- */
-void rtems_cache_flush_multiple_data_lines_processor_set(
- const void *addr,
- size_t size,
- const size_t setsize,
- const cpu_set_t *set
-);
-
-/**
- * @brief Invalidates multiple data cache lines for a set of processors
- *
- * The cache lines covering the area are marked as invalid. A later read
- * access in the area will load the data from memory.
- *
- * In case the area is not aligned on cache line boundaries, then this
- * operation may destroy unrelated data.
- *
- * This operation should not be called from interrupt context.
- *
- * @param[in] addr The start address of the area to invalidate.
- * @param[in] size The size in bytes of the area to invalidate.
- * @param[in] setsize The size of the processor set.
- * @param[in] set The target processor set.
- */
-void rtems_cache_invalidate_multiple_data_lines_processor_set(
- const void *addr,
- size_t size,
- const size_t setsize,
- const cpu_set_t *set
-);
-
-/**
- * @brief Flushes the entire data cache for a set of processors
- *
- * This operation should not be called from interrupt context.
- *
- * @see rtems_cache_flush_multiple_data_lines().
- *
- * @param[in] setsize The size of the processor set.
- * @param[in] set The target processor set.
- */
-void rtems_cache_flush_entire_data_processor_set(
- const size_t setsize,
- const cpu_set_t *set
-);
-
-/**
- * @brief Invalidates the entire cache for a set of processors
- *
- * This function is responsible for performing a data cache
- * invalidate. It invalidates the entire cache for a set of
- * processors.
- *
- * This operation should not be called from interrupt context.
- *
- * @param[in] setsize The size of the processor set.
- * @param[in] set The target processor set.
- */
-void rtems_cache_invalidate_entire_data_processor_set(
- const size_t setsize,
- const cpu_set_t *set
-);
-
-#endif
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/clock.h b/cpukit/rtems/include/rtems/rtems/clock.h
deleted file mode 100644
index a837b88700..0000000000
--- a/cpukit/rtems/include/rtems/rtems/clock.h
+++ /dev/null
@@ -1,318 +0,0 @@
-/**
- * @file rtems/rtems/clock.h
- *
- * @defgroup ClassicClock Clocks
- *
- * @ingroup ClassicRTEMS
- * @brief Clock Manager API
- *
- * This include file contains all the constants and structures associated
- * with the Clock Manager. This manager provides facilities to set, obtain,
- * and continually update the current date and time.
- *
- * This manager provides directives to:
- *
- * - set the current date and time
- * - obtain the current date and time
- * - announce a clock tick
- * - obtain the system uptime
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_CLOCK_H
-#define _RTEMS_RTEMS_CLOCK_H
-
-#include <rtems/score/watchdog.h>
-#include <rtems/score/tod.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/types.h>
-#include <rtems/config.h>
-#include <rtems/score/timecounterimpl.h>
-
-#include <sys/time.h> /* struct timeval */
-
-/**
- * @defgroup ClassicClock Clocks
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Clock
- * Manager.
- */
-/**@{*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief Obtain Current Time of Day (Classic TOD)
- *
- * This routine implements the rtems_clock_get_tod directive. It returns
- * the current time of day in the format defined by RTEID.
- *
- * Clock Manager - rtems_clock_get_tod
- *
- * @param[in] time_buffer points to the time of day structure
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the time_buffer will
- * be filled in with the current time of day.
- */
-rtems_status_code rtems_clock_get_tod(
- rtems_time_of_day *time_buffer
-);
-
-/**
- * @brief Obtain TOD in struct timeval Format
- *
- * This routine implements the rtems_clock_get_tod_timeval
- * directive.
- *
- * @param[in] time points to the struct timeval variable to fill in
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the time will
- * be filled in with the current time of day.
- */
-rtems_status_code rtems_clock_get_tod_timeval(
- struct timeval *time
-);
-
-/**
- * @brief Obtain Seconds Since Epoch
- *
- * This routine implements the rtems_clock_get_seconds_since_epoch
- * directive.
- *
- * @param[in] the_interval points to the interval variable to fill in
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the time_buffer will
- * be filled in with the current time of day.
- */
-rtems_status_code rtems_clock_get_seconds_since_epoch(
- rtems_interval *the_interval
-);
-
-/**
- * @brief Gets the current ticks counter value.
- *
- * @return The current tick counter value. With a 1ms clock tick, this counter
- * overflows after 50 days since boot.
- */
-RTEMS_INLINE_ROUTINE rtems_interval rtems_clock_get_ticks_since_boot(void)
-{
- return _Watchdog_Ticks_since_boot;
-}
-
-/**
- * @brief Returns the ticks counter value delta ticks in the future.
- *
- * @param[in] delta The ticks delta value.
- *
- * @return The tick counter value delta ticks in the future.
- */
-RTEMS_INLINE_ROUTINE rtems_interval rtems_clock_tick_later(
- rtems_interval delta
-)
-{
- return _Watchdog_Ticks_since_boot + delta;
-}
-
-/**
- * @brief Returns the ticks counter value at least delta microseconds in the
- * future.
- *
- * @param[in] delta_in_usec The delta value in microseconds.
- *
- * @return The tick counter value at least delta microseconds in the future.
- */
-RTEMS_INLINE_ROUTINE rtems_interval rtems_clock_tick_later_usec(
- rtems_interval delta_in_usec
-)
-{
- rtems_interval us_per_tick = rtems_configuration_get_microseconds_per_tick();
-
- /*
- * Add one additional tick, since we don't know the time to the clock next
- * tick.
- */
- return _Watchdog_Ticks_since_boot
- + (delta_in_usec + us_per_tick - 1) / us_per_tick + 1;
-}
-
-/**
- * @brief Returns true if the current ticks counter value indicates a time
- * before the time specified by the tick value and false otherwise.
- *
- * @param[in] tick The tick value.
- *
- * This can be used to write busy loops with a timeout.
- *
- * @code
- * status busy( void )
- * {
- * rtems_interval timeout = rtems_clock_tick_later_usec( 10000 );
- *
- * do {
- * if ( ok() ) {
- * return success;
- * }
- * } while ( rtems_clock_tick_before( timeout ) );
- *
- * return timeout;
- * }
- * @endcode
- *
- * @retval true The current ticks counter value indicates a time before the
- * time specified by the tick value.
- * @retval false Otherwise.
- */
-RTEMS_INLINE_ROUTINE bool rtems_clock_tick_before(
- rtems_interval tick
-)
-{
- return (int32_t) ( tick - _Watchdog_Ticks_since_boot ) > 0;
-}
-
-/**
- * @brief Obtain Ticks Per Seconds
- *
- * This routine implements the rtems_clock_get_ticks_per_second
- * directive.
- *
- * @retval This method returns the number of ticks per second. It cannot
- * fail since RTEMS is always configured to know the number of
- * ticks per second.
- */
-rtems_interval rtems_clock_get_ticks_per_second(void);
-
-/* Optimized variant for C/C++ without function call overhead */
-#define rtems_clock_get_ticks_per_second() ( _Watchdog_Ticks_per_second )
-
-/**
- * @brief Set the Current TOD
- *
- * This routine implements the rtems_clock_set directive. It sets
- * the current time of day to that in the time_buffer record.
- *
- * @param[in] time_buffer points to the new TOD
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- *
- * @note Activities scheduled based upon the current time of day
- * may be executed immediately if the time is moved forward.
- */
-rtems_status_code rtems_clock_set(
- const rtems_time_of_day *time_buffer
-);
-
-/**
- * @brief Announce a Clock Tick
- *
- * This routine implements the rtems_clock_tick directive. It is invoked
- * to inform RTEMS of the occurrence of a clock tick.
- *
- * @retval This directive always returns RTEMS_SUCCESSFUL.
- *
- * @note This method is typically called from an ISR and is the basis
- * for all timeouts and delays. This routine only works for leap-years
- * through 2099.
- */
-rtems_status_code rtems_clock_tick( void );
-
-/**
- * @brief Obtain the System Uptime
- *
- * This directive returns the system uptime.
- *
- * @param[in] uptime is a pointer to the time structure
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the @a uptime will be
- * filled in.
- */
-rtems_status_code rtems_clock_get_uptime(
- struct timespec *uptime
-);
-
-/**
- * @brief Gets the System Uptime in the Struct Timeval Format
- *
- * @param[out] uptime is a pointer to a struct timeval structure.
- *
- * @retval This methods returns the system uptime.
- *
- * @note Pointer must not be NULL.
- */
-void rtems_clock_get_uptime_timeval( struct timeval *uptime );
-
-/**
- * @brief Returns the system uptime in seconds.
- *
- * @retval The system uptime in seconds.
- */
-RTEMS_INLINE_ROUTINE time_t rtems_clock_get_uptime_seconds( void )
-{
- return _Timecounter_Time_uptime - 1;
-}
-
-/**
- * @brief Returns the system uptime in nanoseconds.
- *
- * @retval The system uptime in nanoseconds.
- */
-uint64_t rtems_clock_get_uptime_nanoseconds( void );
-
-/**
- * @brief TOD Validate
- *
- * This support function returns true if @a the_tod contains
- * a valid time of day, and false otherwise.
- *
- * @param[in] the_tod is the TOD structure to validate
- *
- * @retval This method returns true if the TOD is valid and false otherwise.
- *
- * @note This routine only works for leap-years through 2099.
- */
-bool _TOD_Validate(
- const rtems_time_of_day *the_tod
-);
-
-/**
- * @brief TOD to Seconds
- *
- * This function returns the number seconds between the epoch and @a the_tod.
- *
- * @param[in] the_tod is the TOD structure to convert to seconds
- *
- * @retval This method returns the number of seconds since epoch represented
- * by @a the_tod
- */
-Watchdog_Interval _TOD_To_seconds(
- const rtems_time_of_day *the_tod
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/config.h b/cpukit/rtems/include/rtems/rtems/config.h
deleted file mode 100644
index 77ee798d74..0000000000
--- a/cpukit/rtems/include/rtems/rtems/config.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * @file rtems/rtems/config.h
- *
- * @defgroup ClassicConfig Configuration
- *
- * @ingroup ClassicRTEMS
- * @brief Configuration Table
- *
- * This include file contains the table of user defined configuration
- * parameters specific for the RTEMS API.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_CONFIG_H
-#define _RTEMS_RTEMS_CONFIG_H
-
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/tasks.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicConfig Configuration
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the application's configuration
- * of the Classic API including the maximum number of each class of objects.
- */
-/**@{*/
-
-/**
- * The following records define the Configuration Table. The
- * information contained in this table is required in all
- * RTEMS systems, whether single or multiprocessor. This
- * table primarily defines the following:
- *
- * + required number of each object type
- */
-typedef struct {
- /**
- * This field contains the maximum number of Classic API
- * Tasks which are configured for this application.
- */
- uint32_t maximum_tasks;
-
- /**
- * This field contains the maximum number of Classic API
- * Timers which are configured for this application.
- */
- uint32_t maximum_timers;
-
- /**
- * This field contains the maximum number of Classic API
- * Semaphores which are configured for this application.
- */
- uint32_t maximum_semaphores;
-
- /**
- * This field contains the maximum number of Classic API
- * Message Queues which are configured for this application.
- */
- uint32_t maximum_message_queues;
-
- /**
- * This field contains the maximum number of Classic API
- * Partitions which are configured for this application.
- */
- uint32_t maximum_partitions;
-
- /**
- * This field contains the maximum number of Classic API
- * Regions which are configured for this application.
- */
- uint32_t maximum_regions;
-
- /**
- * This field contains the maximum number of Classic API
- * Dual Ported Memory Areas which are configured for this
- * application.
- */
- uint32_t maximum_ports;
-
- /**
- * This field contains the maximum number of Classic API
- * Rate Monotonic Periods which are configured for this
- * application.
- */
- uint32_t maximum_periods;
-
- /**
- * This field contains the maximum number of Classic API
- * Barriers which are configured for this application.
- */
- uint32_t maximum_barriers;
-
- /**
- * This field contains the number of Classic API Initialization
- * Tasks which are configured for this application.
- */
- uint32_t number_of_initialization_tasks;
-
- /**
- * This field is the set of Classic API Initialization
- * Tasks which are configured for this application.
- */
- rtems_initialization_tasks_table *User_initialization_tasks_table;
-} rtems_api_configuration_table;
-
-/**
- * @brief RTEMS API Configuration Table
- *
- * This is the RTEMS API Configuration Table expected to be generated
- * by confdefs.h.
- */
-extern rtems_api_configuration_table Configuration_RTEMS_API;
-
-/**@}*/
-
-/**
- * This macro returns the number of Classic API semaphores configured.
- */
-#define rtems_configuration_get_maximum_semaphores() \
- rtems_configuration_get_rtems_api_configuration()->maximum_semaphores
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/dpmem.h b/cpukit/rtems/include/rtems/rtems/dpmem.h
deleted file mode 100644
index e582d2d359..0000000000
--- a/cpukit/rtems/include/rtems/rtems/dpmem.h
+++ /dev/null
@@ -1,179 +0,0 @@
-/**
- * @file rtems/rtems/dpmem.h
- *
- * @defgroup ClassicDPMEM Dual Ported Memory
- *
- * @ingroup ClassicRTEMS
- * @brief Dual Ported Memory Manager
- *
- * This include file contains all the constants and structures associated
- * with the Dual Ported Memory Manager. This manager provides a mechanism
- * for converting addresses between internal and external representations
- * for multiple dual-ported memory areas.
- *
- * Directives provided are:
- *
- * - create a port
- * - get ID of a port
- * - delete a port
- * - convert external to internal address
- * - convert internal to external address
- *
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_DPMEM_H
-#define _RTEMS_RTEMS_DPMEM_H
-
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/status.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicDPMEM Dual Ported Memory
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the
- * Classic API Dual Ported Memory Manager.
- */
-/**@{*/
-
-/**
- * The following structure defines the port control block. Each port
- * has a control block associated with it. This control block contains
- * all information required to support the port related operations.
- */
-typedef struct {
- /** This field is the object management portion of a Port instance. */
- Objects_Control Object;
- /** This field is the base internal address of the port. */
- void *internal_base;
- /** This field is the base external address of the port. */
- void *external_base;
- /** This field is the length of dual-ported area of the port. */
- uint32_t length;
-} Dual_ported_memory_Control;
-
-/**
- * @brief Creates a port into a dual-ported memory area.
- *
- * This routine implements the rtems_port_create directive. The port
- * will have the name @a name. The port maps onto an area of dual ported
- * memory of length bytes which has internal_start and external_start
- * as the internal and external starting addresses, respectively.
- * It returns the id of the created port in ID.
- *
- * @param[in] name is the user defined port name
- * @param[in] internal_start is the internal start address of port
- * @param[in] external_start is the external start address of port
- * @param[in] length is the physical length in bytes
- * @param[out] id is the address of port id to set
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the id will
- * be filled in with the port id.
- */
-rtems_status_code rtems_port_create(
- rtems_name name,
- void *internal_start,
- void *external_start,
- uint32_t length,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Port Name to Id
- *
- * This routine implements the rtems_port_ident directive. This directive
- * returns the port ID associated with name. If more than one port is
- * named name, then the port to which the ID belongs is arbitrary.
- *
- * @param[in] name is the user defined port name
- * @param[out] id is the pointer to port id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_port_ident(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Delete Port
- *
- * This routine implements the rtems_port_delete directive. It deletes
- * the port associated with ID.
- *
- * @param[in] id is the dual-ported memory area id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_port_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Port External to Internal
- *
- * This routine implements the rtems_port_external_to_internal directive.
- * It returns the internal port address which maps to the provided
- * external port address for the specified port ID. If the given external
- * address is an invalid dual-ported address, then the internal address is
- * set to the given external address.
- *
- * @param[in] id is the id of dp memory object
- * @param[in] external is the external address
- * @param[out] internal is the pointer of internal address to set
- *
- * @retval RTEMS_SUCCESSFUL
- */
-rtems_status_code rtems_port_external_to_internal(
- rtems_id id,
- void *external,
- void **internal
-);
-
-/**
- * @brief RTEMS Port Internal to External
- *
- * This routine implements the Port_internal_to_external directive.
- * It returns the external port address which maps to the provided
- * internal port address for the specified port ID. If the given
- * internal address is an invalid dual-ported address, then the
- * external address is set to the given internal address.
- *
- * @param[in] id is the id of dual-ported memory object
- * @param[in] internal is the internal address to set
- * @param[in] external is the pointer to external address
- *
- * @retval RTEMS_SUCCESSFUL and the external will be filled in
- * with the external addresses
- */
-rtems_status_code rtems_port_internal_to_external(
- rtems_id id,
- void *internal,
- void **external
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/dpmemimpl.h b/cpukit/rtems/include/rtems/rtems/dpmemimpl.h
deleted file mode 100644
index 52ac48c8dc..0000000000
--- a/cpukit/rtems/include/rtems/rtems/dpmemimpl.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicDPMEMImpl
- *
- * @brief Dual Ported Memory Manager Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_DPMEM_INL
-#define _RTEMS_RTEMS_DPMEM_INL
-
-#include <rtems/rtems/dpmem.h>
-#include <rtems/score/objectimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicDPMEMImpl Dual Ported Memory Manager Implementation
- *
- * @ingroup ClassicDPMEM
- *
- * @{
- */
-
-/**
- * @brief Define the internal Dual Ported Memory information
- * The following define the internal Dual Ported Memory information.
- */
-extern Objects_Information _Dual_ported_memory_Information;
-
-/**
- * @brief Allocates a port control block from the inactive chain
- * of free port control blocks.
- *
- * This routine allocates a port control block from the inactive chain
- * of free port control blocks.
- */
-RTEMS_INLINE_ROUTINE Dual_ported_memory_Control
- *_Dual_ported_memory_Allocate ( void )
-{
- return (Dual_ported_memory_Control *)
- _Objects_Allocate( &_Dual_ported_memory_Information );
-}
-
-/**
- * @brief Frees a port control block to the inactive chain
- * of free port control blocks.
- *
- * This routine frees a port control block to the inactive chain
- * of free port control blocks.
- */
-RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free (
- Dual_ported_memory_Control *the_port
-)
-{
- _Objects_Free( &_Dual_ported_memory_Information, &the_port->Object );
-}
-
-RTEMS_INLINE_ROUTINE Dual_ported_memory_Control *_Dual_ported_memory_Get(
- Objects_Id id,
- ISR_lock_Context *lock_context
-)
-{
- return (Dual_ported_memory_Control *)
- _Objects_Get( id, lock_context, &_Dual_ported_memory_Information );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _RTEMS_RTEMS_DPMEM_INL */
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/event.h b/cpukit/rtems/include/rtems/rtems/event.h
deleted file mode 100644
index 1cd64c0cfa..0000000000
--- a/cpukit/rtems/include/rtems/rtems/event.h
+++ /dev/null
@@ -1,526 +0,0 @@
-/**
- * @file rtems/rtems/event.h
- *
- * @defgroup ClassicEvent Events
- *
- * @ingroup ClassicRTEMS
- * @brief Information Related to Event Manager
- *
- * This include file contains the information pertaining to the Event
- * Manager. This manager provides a high performance method of communication
- * and synchronization.
- *
- * Directives provided are:
- *
- * - send an event set to a task
- * - receive event condition
- *
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_EVENT_H
-#define _RTEMS_RTEMS_EVENT_H
-
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/options.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicEventSet Event Set
- *
- * @ingroup ClassicEvent
- *
- * @{
- */
-
-/**
- * @brief Integer type to hold an event set of up to 32 events represented as
- * a bit field.
- */
-typedef uint32_t rtems_event_set;
-
-/**
- * @brief Constant used to send or receive all events.
- */
-#define RTEMS_ALL_EVENTS 0xFFFFFFFF
-
-/** @brief Defines the bit in the event set associated with event 0. */
-#define RTEMS_EVENT_0 0x00000001
-/** @brief Defines the bit in the event set associated with event 1. */
-#define RTEMS_EVENT_1 0x00000002
-/** @brief Defines the bit in the event set associated with event 2. */
-#define RTEMS_EVENT_2 0x00000004
-/** @brief Defines the bit in the event set associated with event 3. */
-#define RTEMS_EVENT_3 0x00000008
-/** @brief Defines the bit in the event set associated with event 4. */
-#define RTEMS_EVENT_4 0x00000010
-/** @brief Defines the bit in the event set associated with event 5. */
-#define RTEMS_EVENT_5 0x00000020
-/** @brief Defines the bit in the event set associated with event 6. */
-#define RTEMS_EVENT_6 0x00000040
-/** @brief Defines the bit in the event set associated with event 7. */
-#define RTEMS_EVENT_7 0x00000080
-/** @brief Defines the bit in the event set associated with event 8. */
-#define RTEMS_EVENT_8 0x00000100
-/** @brief Defines the bit in the event set associated with event 9. */
-#define RTEMS_EVENT_9 0x00000200
-/** @brief Defines the bit in the event set associated with event 10. */
-#define RTEMS_EVENT_10 0x00000400
-/** @brief Defines the bit in the event set associated with event 11. */
-#define RTEMS_EVENT_11 0x00000800
-/** @brief Defines the bit in the event set associated with event 12. */
-#define RTEMS_EVENT_12 0x00001000
-/** @brief Defines the bit in the event set associated with event 13. */
-#define RTEMS_EVENT_13 0x00002000
-/** @brief Defines the bit in the event set associated with event 14. */
-#define RTEMS_EVENT_14 0x00004000
-/** @brief Defines the bit in the event set associated with event 15. */
-#define RTEMS_EVENT_15 0x00008000
-/** @brief Defines the bit in the event set associated with event 16. */
-#define RTEMS_EVENT_16 0x00010000
-/** @brief Defines the bit in the event set associated with event 17. */
-#define RTEMS_EVENT_17 0x00020000
-/** @brief Defines the bit in the event set associated with event 18. */
-#define RTEMS_EVENT_18 0x00040000
-/** @brief Defines the bit in the event set associated with event 19. */
-#define RTEMS_EVENT_19 0x00080000
-/** @brief Defines the bit in the event set associated with event 20. */
-#define RTEMS_EVENT_20 0x00100000
-/** @brief Defines the bit in the event set associated with event 21. */
-#define RTEMS_EVENT_21 0x00200000
-/** @brief Defines the bit in the event set associated with event 22. */
-#define RTEMS_EVENT_22 0x00400000
-/** @brief Defines the bit in the event set associated with event 23. */
-#define RTEMS_EVENT_23 0x00800000
-/** @brief Defines the bit in the event set associated with event 24. */
-#define RTEMS_EVENT_24 0x01000000
-/** @brief Defines the bit in the event set associated with event 25. */
-#define RTEMS_EVENT_25 0x02000000
-/** @brief Defines the bit in the event set associated with event 26. */
-#define RTEMS_EVENT_26 0x04000000
-/** @brief Defines the bit in the event set associated with event 27. */
-#define RTEMS_EVENT_27 0x08000000
-/** @brief Defines the bit in the event set associated with event 29. */
-#define RTEMS_EVENT_28 0x10000000
-/** @brief Defines the bit in the event set associated with event 29. */
-#define RTEMS_EVENT_29 0x20000000
-/** @brief Defines the bit in the event set associated with event 30. */
-#define RTEMS_EVENT_30 0x40000000
-/** @brief Defines the bit in the event set associated with event 31. */
-#define RTEMS_EVENT_31 0x80000000
-
-/** @} */
-
-/**
- * @defgroup ClassicEvent Events
- *
- * @ingroup ClassicRTEMS
- *
- * @brief The event manager provides a high performance method of intertask
- * communication and synchronization.
- *
- * An event flag is used by a task (or ISR) to inform another task of the
- * occurrence of a significant situation. Thirty-two event flags are
- * associated with each task. A collection of one or more event flags is
- * referred to as an event set. The data type rtems_event_set is used to
- * manage event sets.
- *
- * The application developer should remember the following key characteristics
- * of event operations when utilizing the event manager:
- *
- * - Events provide a simple synchronization facility.
- * - Events are aimed at tasks.
- * - Tasks can wait on more than one event simultaneously.
- * - Events are independent of one another.
- * - Events do not hold or transport data.
- * - Events are not queued. In other words, if an event is sent more than once
- * to a task before being received, the second and subsequent send
- * operations to that same task have no effect.
- *
- * An event set is posted when it is directed (or sent) to a task. A pending
- * event is an event that has been posted but not received. An event condition
- * is used to specify the event set which the task desires to receive and the
- * algorithm which will be used to determine when the request is satisfied. An
- * event condition is satisfied based upon one of two algorithms which are
- * selected by the user. The @ref RTEMS_EVENT_ANY algorithm states that an
- * event condition is satisfied when at least a single requested event is
- * posted. The @ref RTEMS_EVENT_ALL algorithm states that an event condition
- * is satisfied when every requested event is posted.
- *
- * An event set or condition is built by a bitwise or of the desired events.
- * The set of valid events is @ref RTEMS_EVENT_0 through @ref RTEMS_EVENT_31.
- * If an event is not explicitly specified in the set or condition, then it is
- * not present. Events are specifically designed to be mutually exclusive,
- * therefore bitwise or and addition operations are equivalent as long as each
- * event appears exactly once in the event set list.
- *
- * For example, when sending the event set consisting of @ref RTEMS_EVENT_6,
- * @ref RTEMS_EVENT_15, and @ref RTEMS_EVENT_31, the event parameter to the
- * rtems_event_send() directive should be @ref RTEMS_EVENT_6 |
- * @ref RTEMS_EVENT_15 | @ref RTEMS_EVENT_31.
- *
- * @{
- */
-
-/**
- * @brief Constant used to receive the set of currently pending events in
- * rtems_event_receive().
- */
-#define RTEMS_PENDING_EVENTS 0
-
-/**
- * @brief Sends an Event Set to the Target Task
- *
- * This directive sends an event set @a event_in to the task specified by
- * @a id.
- *
- * Based upon the state of the target task, one of the following situations
- * applies. The target task is
- * - blocked waiting for events.
- * If the waiting task's input event condition is
- * - satisfied, then the task is made ready for execution.
- * - not satisfied, then the event set is posted but left pending and the
- * task remains blocked.
- * - not waiting for events.
- * - The event set is posted and left pending.
- *
- * Identical events sent to a task are not queued. In other words, the second,
- * and subsequent, posting of an event to a task before it can perform an
- * rtems_event_receive() has no effect.
- *
- * The calling task will be preempted if it has preemption enabled and a
- * higher priority task is unblocked as the result of this directive.
- *
- * Sending an event set to a global task which does not reside on the local
- * node will generate a request telling the remote node to send the event set
- * to the appropriate task.
- *
- * @param[in] id Identifier of the target task. Specifying @ref RTEMS_SELF
- * results in the event set being sent to the calling task.
- * @param[in] event_in Event set sent to the target task.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ID Invalid task identifier.
- */
-rtems_status_code rtems_event_send (
- rtems_id id,
- rtems_event_set event_in
-);
-
-/**
- * @brief Receives pending events.
- *
- * This directive attempts to receive the event condition specified in
- * @a event_in. If @a event_in is set to @ref RTEMS_PENDING_EVENTS, then the
- * current pending events are returned in @a event_out and left pending. The
- * @ref RTEMS_WAIT and @ref RTEMS_NO_WAIT options in the @a option_set
- * parameter are used to specify whether or not the task is willing to wait
- * for the event condition to be satisfied. The @ref RTEMS_EVENT_ANY and @ref
- * RTEMS_EVENT_ALL are used in the @a option_set parameter to specify whether
- * at least a single event or the complete event set is necessary to satisfy
- * the event condition. The @a event_out parameter is returned to the calling
- * task with the value that corresponds to the events in @a event_in that were
- * satisfied.
- *
- * A task can determine the pending event set by using a value of
- * @ref RTEMS_PENDING_EVENTS for the input event set @a event_in. The pending
- * events are returned to the calling task but the event set is left
- * unaltered.
- *
- * A task can receive all of the currently pending events by using the a value
- * of @ref RTEMS_ALL_EVENTS for the input event set @a event_in and
- * @ref RTEMS_NO_WAIT | @ref RTEMS_EVENT_ANY for the option set @a option_set.
- * The pending events are returned to the calling task and the event set is
- * cleared. If no events are pending then the @ref RTEMS_UNSATISFIED status
- * code will be returned.
- *
- * If pending events satisfy the event condition, then @a event_out is set to
- * the satisfied events and the pending events in the event condition are
- * cleared. If the event condition is not satisfied and @ref RTEMS_NO_WAIT is
- * specified, then @a event_out is set to the currently satisfied events. If
- * the calling task chooses to wait, then it will block waiting for the event
- * condition.
- *
- * If the calling task must wait for the event condition to be satisfied, then
- * the timeout parameter is used to specify the maximum interval to wait. If
- * it is set to @ref RTEMS_NO_TIMEOUT, then the calling task will wait forever.
- *
- * This directive only affects the events specified in @a event_in. Any
- * pending events that do not correspond to any of the events specified in
- * @a event_in will be left pending.
- *
- * A clock tick is required to support the wait with time out functionality of
- * this directive.
- *
- * @param[in] event_in Set of requested events (input events).
- * @param[in] option_set Use a bitwise or of the following options
- * - @ref RTEMS_WAIT - task will wait for event (default),
- * - @ref RTEMS_NO_WAIT - task should not wait,
- * - @ref RTEMS_EVENT_ALL - return after all events (default), and
- * - @ref RTEMS_EVENT_ANY - return after any events.
- * @param[in] ticks Time out in ticks. Use @ref RTEMS_NO_TIMEOUT to wait
- * without a time out (potentially forever).
- * @param[out] event_out Set of received events (output events).
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_UNSATISFIED Input events not satisfied (only with the
- * @ref RTEMS_NO_WAIT option).
- * @retval RTEMS_INVALID_ADDRESS The @a event_out pointer is @c NULL.
- * @retval RTEMS_TIMEOUT Timed out waiting for events.
- */
-rtems_status_code rtems_event_receive (
- rtems_event_set event_in,
- rtems_option option_set,
- rtems_interval ticks,
- rtems_event_set *event_out
-);
-
-/** @} */
-
-/**
- * @defgroup ClassicEventSystem System Events
- *
- * @ingroup ClassicEvent
- *
- * System events are similar to normal events. They offer a second set of
- * events. These events are intended for internal RTEMS use and should not be
- * used by applications (with the exception of the transient system event).
- *
- * The event @ref RTEMS_EVENT_SYSTEM_TRANSIENT is used for transient usage.
- * See also @ref ClassicEventTransient. This event may be used by every entity
- * that fulfils its usage pattern.
- */
-/**@{**/
-
-/**
- * @brief Reserved system event for network SBWAIT usage.
- */
-#define RTEMS_EVENT_SYSTEM_NETWORK_SBWAIT RTEMS_EVENT_24
-
-/**
- * @brief Reserved system event for network SOSLEEP usage.
- */
-#define RTEMS_EVENT_SYSTEM_NETWORK_SOSLEEP RTEMS_EVENT_25
-
-/**
- * @brief Reserved system event for network socket close.
- */
-#define RTEMS_EVENT_SYSTEM_NETWORK_CLOSE RTEMS_EVENT_26
-
-/**
- * @brief Reserved system event to resume server threads, e.g timer or
- * interrupt server.
- */
-#define RTEMS_EVENT_SYSTEM_SERVER_RESUME RTEMS_EVENT_29
-
-/**
- * @brief Reserved system event for the server threads, e.g timer or interrupt
- * server.
- */
-#define RTEMS_EVENT_SYSTEM_SERVER RTEMS_EVENT_30
-
-/**
- * @brief Reserved system event for transient usage.
- */
-#define RTEMS_EVENT_SYSTEM_TRANSIENT RTEMS_EVENT_31
-
-/**
- * @brief See rtems_event_send().
- */
-rtems_status_code rtems_event_system_send(
- rtems_id id,
- rtems_event_set event_in
-);
-
-/**
- * @brief See rtems_event_receive().
- */
-rtems_status_code rtems_event_system_receive(
- rtems_event_set event_in,
- rtems_option option_set,
- rtems_interval ticks,
- rtems_event_set *event_out
-);
-
-/** @} */
-
-/**
- * @defgroup ClassicEventTransient Transient Event
- *
- * @ingroup ClassicEvent
- *
- * The transient event can be used by a client task to issue a request to
- * another task or interrupt service (server). The server can send the
- * transient event to the client task to notify about a request completion, see
- * rtems_event_transient_send(). The client task can wait for the transient
- * event reception with rtems_event_transient_receive().
- *
- * The user of the transient event must ensure that this event is not pending
- * once the request is finished or cancelled. A successful reception of the
- * transient event with rtems_event_transient_receive() will clear the
- * transient event. If a reception with timeout is used the transient event
- * state is undefined after a timeout return status. The transient event can
- * be cleared unconditionally with the non-blocking
- * rtems_event_transient_clear().
- *
- * @msc
- * hscale="1.6";
- * M [label="Main Task"], IDLE [label="Idle Task"], S [label="Server"], TIME [label="System Tick Handler"];
- * |||;
- * --- [label="sequence with request completion"];
- * M box M [label="prepare request\nissue request\nrtems_event_transient_receive()"];
- * M=>>IDLE [label="blocking operation"];
- * IDLE=>>S [label="request completion"];
- * S box S [label="rtems_event_transient_send()"];
- * S=>>M [label="task is ready again"];
- * M box M [label="finish request"];
- * |||;
- * --- [label="sequence with early request completion"];
- * M box M [label="prepare request\nissue request"];
- * M=>>S [label="request completion"];
- * S box S [label="rtems_event_transient_send()"];
- * S=>>M [label="transient event is now pending"];
- * M box M [label="rtems_event_transient_receive()\nfinish request"];
- * |||;
- * --- [label="sequence with timeout event"];
- * M box M [label="prepare request\nissue request\nrtems_event_transient_receive()"];
- * M=>>IDLE [label="blocking operation"];
- * IDLE=>>TIME [label="timeout expired"];
- * TIME box TIME [label="cancel blocking operation"];
- * TIME=>>M [label="task is ready again"];
- * M box M [label="cancel request\nrtems_event_transient_clear()"];
- * @endmsc
- *
- * Suppose you have a task that wants to issue a certain request and then waits
- * for request completion. It can create a request structure and store its
- * task identifier there. Now it can place the request on a work queue of
- * another task (or interrupt handler). Afterwards the task waits for the
- * reception of the transient event. Once the server task is finished with the
- * request it can send the transient event to the waiting task and wake it up.
- *
- * @code
- * #include <assert.h>
- * #include <rtems.h>
- *
- * typedef struct {
- * rtems_id task_id;
- * bool work_done;
- * } request;
- *
- * void server(rtems_task_argument arg)
- * {
- * rtems_status_code sc;
- * request *req = (request *) arg;
- *
- * req->work_done = true;
- *
- * sc = rtems_event_transient_send(req->task_id);
- * assert(sc == RTEMS_SUCCESSFUL);
- *
- * sc = rtems_task_delete(RTEMS_SELF);
- * assert(sc == RTEMS_SUCCESSFUL);
- * }
- *
- * void issue_request_and_wait_for_completion(void)
- * {
- * rtems_status_code sc;
- * rtems_id id;
- * request req;
- *
- * req.task_id = rtems_task_self();
- * req.work_done = false;
- *
- * sc = rtems_task_create(
- * rtems_build_name('S', 'E', 'R', 'V'),
- * 1,
- * RTEMS_MINIMUM_STACK_SIZE,
- * RTEMS_DEFAULT_MODES,
- * RTEMS_DEFAULT_ATTRIBUTES,
- * &id
- * );
- * assert(sc == RTEMS_SUCCESSFUL);
- *
- * sc = rtems_task_start(id, server, (rtems_task_argument) &req);
- * assert(sc == RTEMS_SUCCESSFUL);
- *
- * sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
- * assert(sc == RTEMS_SUCCESSFUL);
- *
- * assert(req.work_done);
- * }
- * @endcode
- */
-/**@{**/
-
-/**
- * @brief See rtems_event_system_send().
- *
- * The system event @ref RTEMS_EVENT_SYSTEM_TRANSIENT will be sent.
- */
-RTEMS_INLINE_ROUTINE rtems_status_code rtems_event_transient_send(
- rtems_id id
-)
-{
- return rtems_event_system_send( id, RTEMS_EVENT_SYSTEM_TRANSIENT );
-}
-
-/**
- * @brief See rtems_event_system_receive().
- *
- * The system event @ref RTEMS_EVENT_SYSTEM_TRANSIENT will be received.
- */
-RTEMS_INLINE_ROUTINE rtems_status_code rtems_event_transient_receive(
- rtems_option option_set,
- rtems_interval ticks
-)
-{
- rtems_event_set event_out;
-
- return rtems_event_system_receive(
- RTEMS_EVENT_SYSTEM_TRANSIENT,
- RTEMS_EVENT_ALL | option_set,
- ticks,
- &event_out
- );
-}
-
-/**
- * @brief See rtems_event_system_receive().
- *
- * The system event @ref RTEMS_EVENT_SYSTEM_TRANSIENT will be cleared.
- */
-RTEMS_INLINE_ROUTINE void rtems_event_transient_clear( void )
-{
- rtems_event_set event_out;
-
- rtems_event_system_receive(
- RTEMS_EVENT_SYSTEM_TRANSIENT,
- RTEMS_EVENT_ALL | RTEMS_NO_WAIT,
- 0,
- &event_out
- );
-}
-
-/** @} */
-
-typedef struct {
- rtems_event_set pending_events;
-} Event_Control;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/eventimpl.h b/cpukit/rtems/include/rtems/rtems/eventimpl.h
deleted file mode 100644
index 933ea0fe2b..0000000000
--- a/cpukit/rtems/include/rtems/rtems/eventimpl.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicEventImpl
- *
- * @brief Classic Event Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_EVENTIMPL_H
-#define _RTEMS_RTEMS_EVENTIMPL_H
-
-#include <rtems/rtems/event.h>
-#include <rtems/score/thread.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicEventImpl Classic Event Implementation
- *
- * @ingroup ClassicEvent
- *
- * @{
- */
-
-/**
- * This constant is passed as the event_in to the
- * rtems_event_receive directive to determine which events are pending.
- */
-#define EVENT_CURRENT 0
-
-/**
- * The following constant is the value of an event set which
- * has no events pending.
- */
-#define EVENT_SETS_NONE_PENDING 0
-
-rtems_status_code _Event_Seize(
- rtems_event_set event_in,
- rtems_option option_set,
- rtems_interval ticks,
- rtems_event_set *event_out,
- Thread_Control *executing,
- Event_Control *event,
- Thread_Wait_flags wait_class,
- States_Control block_state,
- ISR_lock_Context *lock_context
-);
-
-rtems_status_code _Event_Surrender(
- Thread_Control *the_thread,
- rtems_event_set event_in,
- Event_Control *event,
- Thread_Wait_flags wait_class,
- ISR_lock_Context *lock_context
-);
-
-/**
- * @brief Timeout Event
- */
-void _Event_Timeout(
- Objects_Id id,
- void *arg
-);
-
-RTEMS_INLINE_ROUTINE void _Event_Initialize( Event_Control *event )
-{
- event->pending_events = EVENT_SETS_NONE_PENDING;
-}
-
-/**
- * @brief Checks if on events are posted in the event_set.
- *
- * This function returns TRUE if on events are posted in the event_set,
- * and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Event_sets_Is_empty(
- rtems_event_set the_event_set
-)
-{
- return ( the_event_set == 0 );
-}
-
-/**
- * @brief Posts the given new_events into the event_set passed in.
- *
- * This routine posts the given new_events into the event_set
- * passed in. The result is returned to the user in event_set.
- */
-RTEMS_INLINE_ROUTINE void _Event_sets_Post(
- rtems_event_set the_new_events,
- rtems_event_set *the_event_set
-)
-{
- *the_event_set |= the_new_events;
-}
-
-/**
- * @brief Returns the events in event_condition that are set in event_set.
- *
- * This function returns the events in event_condition which are
- * set in event_set.
- */
-RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(
- rtems_event_set the_event_set,
- rtems_event_set the_event_condition
-)
-{
- return ( the_event_set & the_event_condition );
-}
-
-/**
- * @brief Removes the events in mask from the event_set passed in.
- *
- * This function removes the events in mask from the event_set
- * passed in. The result is returned to the user in event_set.
- */
-RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(
- rtems_event_set the_event_set,
- rtems_event_set the_mask
-)
-{
- return ( the_event_set & ~(the_mask) );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/rtems/eventmp.h>
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/eventmp.h b/cpukit/rtems/include/rtems/rtems/eventmp.h
deleted file mode 100644
index a80e60c4e0..0000000000
--- a/cpukit/rtems/include/rtems/rtems/eventmp.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * @file rtems/rtems/eventmp.h
- *
- * @defgroup ClassicEventMP Event MP Support
- *
- * @ingroup ClassicRTEMS
- * @brief Event Manager MP Support
- *
- * This include file contains all the constants and structures associated
- * with the Multiprocessing Support in the Event Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_EVENTMP_H
-#define _RTEMS_RTEMS_EVENTMP_H
-
-#ifndef _RTEMS_RTEMS_EVENTIMPL_H
-# error "Never use <rtems/rtems/eventmp.h> directly; include <rtems/rtems/eventimpl.h> instead."
-#endif
-
-#include <rtems/score/mpciimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicEventMP Event MP Support
- *
- * @ingroup ClassicMP
- *
- * This encapsulates functionality related to the transparent multiprocessing
- * support within the Classic API Event Manager.
- */
-/**@{*/
-
-/*
- * @brief Event_MP_Send_process_packet
- *
- * This routine performs a remote procedure call so that a
- * process operation can be performed on another node.
- *
- * @note This routine is not needed since there are no process
- * packets to be sent by this manager.
- */
-
-/**
- * @brief Issues a remote rtems_event_send() request.
- */
-rtems_status_code _Event_MP_Send(
- rtems_id id,
- rtems_event_set event_in
-);
-
-/**
- * @brief Event MP Packet Process
- *
- * This routine performs the actions specific to this package for
- * the request from another node.
- */
-void _Event_MP_Process_packet (
- rtems_packet_prefix *the_packet_prefix
-);
-
-/*
- * @brief Event_MP_Send_object_was_deleted
- *
- * This routine is invoked indirectly by the thread queue
- * when a proxy has been removed from the thread queue and
- * the remote node must be informed of this.
- *
- * This routine is not needed since there are no objects
- * deleted by this manager.
- */
-
-/*
- * @brief Event_MP_Send_extract_proxy
- *
- * This routine is invoked when a task is deleted and it
- * has a proxy which must be removed from a thread queue and
- * the remote node must be informed of this.
- *
- * This routine is not needed since there are no objects
- * deleted by this manager.
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of file */
diff --git a/cpukit/rtems/include/rtems/rtems/intr.h b/cpukit/rtems/include/rtems/rtems/intr.h
deleted file mode 100644
index 7f99d93883..0000000000
--- a/cpukit/rtems/include/rtems/rtems/intr.h
+++ /dev/null
@@ -1,373 +0,0 @@
-/**
- * @file rtems/rtems/intr.h
- *
- * @defgroup ClassicINTR Interrupts
- *
- * @ingroup ClassicRTEMS
- * @brief Header file for Interrupt Manager
- *
- * This include file contains all the constants and structures associated with
- * the Interrupt Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_INTR_H
-#define _RTEMS_RTEMS_INTR_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <rtems/rtems/status.h>
-#include <rtems/score/isr.h>
-#include <rtems/score/isrlock.h>
-
-/**
- * @defgroup ClassicINTR Interrupts
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Interrupt
- * Manager.
- */
-/**@{*/
-
-/**
- * @brief Interrupt level type.
- */
-typedef ISR_Level rtems_interrupt_level;
-
-/**
- * @brief Control block type used to manage the vectors.
- */
-typedef ISR_Vector_number rtems_vector_number;
-
-/**
- * @brief Return type for interrupt handler.
- */
-typedef ISR_Handler rtems_isr;
-
-#if (CPU_SIMPLE_VECTORED_INTERRUPTS == FALSE)
-
-typedef ISR_Handler_entry rtems_isr_entry;
-
-#else
-/**
- * @brief Interrupt handler type.
- *
- * @see rtems_interrupt_catch()
- */
-typedef rtems_isr ( *rtems_isr_entry )(
- rtems_vector_number
- );
-
-/**
- * @brief RTEMS Interrupt Catch
- *
- * This directive installs @a new_isr_handler as the RTEMS interrupt service
- * routine for the interrupt vector with number @a vector. The previous RTEMS
- * interrupt service routine is returned in @a old_isr_handler.
- *
- * @param[in] new_isr_handler is the address of interrupt service routine
- * @param[in] vector is the interrupt vector number
- * @param[in] old_isr_handler address at which to store previous ISR address
- *
- * @retval RTEMS_SUCCESSFUL and *old_isr_handler filled with previous ISR
- * address
- */
-rtems_status_code rtems_interrupt_catch(
- rtems_isr_entry new_isr_handler,
- rtems_vector_number vector,
- rtems_isr_entry *old_isr_handler
-);
-#endif
-
-#if !defined(RTEMS_SMP)
-
-/**
- * @brief Disable RTEMS Interrupt
- *
- * @note The interrupt level shall be of type @ref rtems_interrupt_level.
- *
- * This macro is only available on uni-processor configurations. The macro
- * rtems_interrupt_local_disable() is available on all configurations.
- */
-#define rtems_interrupt_disable( _isr_cookie ) \
- _ISR_Local_disable(_isr_cookie)
-
-/**
- * @brief Enable RTEMS Interrupt
- *
- * @note The interrupt level shall be of type @ref rtems_interrupt_level.
- *
- * This macro is only available on uni-processor configurations. The macro
- * rtems_interrupt_local_enable() is available on all configurations.
- */
-#define rtems_interrupt_enable( _isr_cookie ) \
- _ISR_Local_enable(_isr_cookie)
-
-/**
- * @brief Flash RTEMS Interrupt
- *
- * @note The interrupt level shall be of type @ref rtems_interrupt_level.
- *
- * This macro is only available on uni-processor configurations. The macro
- * rtems_interrupt_local_disable() and rtems_interrupt_local_enable() is
- * available on all configurations.
- */
-#define rtems_interrupt_flash( _isr_cookie ) \
- _ISR_Local_flash(_isr_cookie)
-
-#endif /* RTEMS_SMP */
-
-/**
- * @brief This macro disables the interrupts on the current processor.
- *
- * On SMP configurations this will not ensure system wide mutual exclusion.
- * Use interrupt locks instead.
- *
- * @param[in] _isr_cookie The previous interrupt level is returned. The type
- * of this variable must be rtems_interrupt_level.
- *
- * @see rtems_interrupt_local_enable().
- */
-#define rtems_interrupt_local_disable( _isr_cookie ) \
- _ISR_Local_disable( _isr_cookie )
-
-/**
- * @brief This macro restores the previous interrupt level on the current
- * processor.
- *
- * @param[in] _isr_cookie The previous interrupt level returned by
- * rtems_interrupt_local_disable().
- */
-#define rtems_interrupt_local_enable( _isr_cookie ) \
- _ISR_Local_enable( _isr_cookie )
-
-/**
- * @brief RTEMS Interrupt Is in Progress
- *
- * A return value of true indicates that the caller is an interrupt service
- * routine and @b not a thread. The directives available to an interrupt
- * service routine are restricted.
- */
-#define rtems_interrupt_is_in_progress() \
- _ISR_Is_in_progress()
-
-/**
- * @brief This routine generates an interrupt.
- *
- * @note No implementation.
- */
-#define rtems_interrupt_cause( _interrupt_to_cause )
-
-/**
- * @brief This routine clears the specified interrupt.
- *
- * @note No implementation.
- */
-#define rtems_interrupt_clear( _interrupt_to_clear )
-
-/**
- * @defgroup ClassicINTRLocks Interrupt Locks
- *
- * @ingroup ClassicINTR
- *
- * @brief Low-level lock to protect critical sections accessed by threads and
- * interrupt service routines.
- *
- * On single processor configurations the interrupt locks degrade to simple
- * interrupt disable/enable sequences. No additional storage or objects are
- * required.
- *
- * This synchronization primitive is supported on SMP configurations. Here SMP
- * locks are used.
- * @{
- */
-
-/**
- * @brief Interrupt lock control.
- */
-typedef ISR_lock_Control rtems_interrupt_lock;
-
-/**
- * @brief Local interrupt lock context for acquire and release pairs.
- */
-typedef ISR_lock_Context rtems_interrupt_lock_context;
-
-/**
- * @brief Defines an interrupt lock member.
- *
- * Do not add a ';' after this macro.
- *
- * @param _designator The designator for the interrupt lock.
- */
-#define RTEMS_INTERRUPT_LOCK_MEMBER( _designator ) \
- ISR_LOCK_MEMBER( _designator )
-
-/**
- * @brief Declares an interrupt lock variable.
- *
- * Do not add a ';' after this macro.
- *
- * @param _qualifier The qualifier for the interrupt lock, e.g. extern.
- * @param _designator The designator for the interrupt lock.
- */
-#define RTEMS_INTERRUPT_LOCK_DECLARE( _qualifier, _designator ) \
- ISR_LOCK_DECLARE( _qualifier, _designator )
-
-/**
- * @brief Defines an interrupt lock variable.
- *
- * Do not add a ';' after this macro.
- *
- * @param _qualifier The qualifier for the interrupt lock, e.g. static.
- * @param _designator The designator for the interrupt lock.
- * @param _name The name for the interrupt lock. It must be a string. The
- * name is only used if profiling is enabled.
- */
-#define RTEMS_INTERRUPT_LOCK_DEFINE( _qualifier, _designator, _name ) \
- ISR_LOCK_DEFINE( _qualifier, _designator, _name )
-
-/**
- * @brief Defines an interrupt lock variable reference.
- *
- * Do not add a ';' after this macro.
- *
- * @param _designator The designator for the interrupt lock reference.
- * @param _target The target for the interrupt lock reference.
- */
-#define RTEMS_INTERRUPT_LOCK_REFERENCE( _designator, _target ) \
- ISR_LOCK_REFERENCE( _designator, _target )
-
-/**
- * @brief Initializer for static initialization of interrupt locks.
- *
- * @param _name The name for the interrupt lock. It must be a string. The
- * name is only used if profiling is enabled.
- */
-#define RTEMS_INTERRUPT_LOCK_INITIALIZER( _name ) ISR_LOCK_INITIALIZER( _name )
-
-/**
- * @brief Initializes an interrupt lock.
- *
- * Concurrent initialization leads to unpredictable results.
- *
- * @param[in,out] _lock The interrupt lock.
- * @param[in] _name The name for the interrupt lock. This name must be a
- * string persistent throughout the life time of this lock. The name is only
- * used if profiling is enabled.
- */
-#define rtems_interrupt_lock_initialize( _lock, _name ) \
- _ISR_lock_Initialize( _lock, _name )
-
-/**
- * @brief Destroys an interrupt lock.
- *
- * Concurrent destruction leads to unpredictable results.
- *
- * @param[in,out] _lock The interrupt lock control.
- */
-#define rtems_interrupt_lock_destroy( _lock ) \
- _ISR_lock_Destroy( _lock )
-
-/**
- * @brief Disables interrupts on the current processor.
- *
- * This function can be used in thread and interrupt context.
- *
- * @param[in,out] _lock_context The local interrupt lock context for an acquire
- * and release pair.
- *
- * @see rtems_interrupt_lock_acquire_isr().
- */
-#define rtems_interrupt_lock_interrupt_disable( _lock_context ) \
- _ISR_lock_ISR_disable( _lock_context )
-
-/**
- * @brief Acquires an interrupt lock.
- *
- * Interrupts will be disabled. On SMP configurations this function acquires
- * an SMP lock.
- *
- * This function can be used in thread and interrupt context.
- *
- * @param[in,out] _lock The interrupt lock.
- * @param[in,out] _lock_context The local interrupt lock context for an acquire
- * and release pair.
- *
- * @see rtems_interrupt_lock_release().
- */
-#define rtems_interrupt_lock_acquire( _lock, _lock_context ) \
- _ISR_lock_ISR_disable_and_acquire( _lock, _lock_context )
-
-/**
- * @brief Releases an interrupt lock.
- *
- * The interrupt status will be restored. On SMP configurations this function
- * releases an SMP lock.
- *
- * This function can be used in thread and interrupt context.
- *
- * @param[in,out] _lock The interrupt lock.
- * @param[in,out] _lock_context The local interrupt lock context for an acquire
- * and release pair.
- *
- * @see rtems_interrupt_lock_acquire().
- */
-#define rtems_interrupt_lock_release( _lock, _lock_context ) \
- _ISR_lock_Release_and_ISR_enable( _lock, _lock_context )
-
-/**
- * @brief Acquires an interrupt lock in the corresponding interrupt service
- * routine.
- *
- * The interrupt status will remain unchanged. On SMP configurations this
- * function acquires an SMP lock.
- *
- * In case the corresponding interrupt service routine can be interrupted by
- * higher priority interrupts and these interrupts enter the critical section
- * protected by this lock, then the result is unpredictable.
- *
- * @param[in,out] _lock The interrupt lock.
- * @param[in,out] _lock_context The local interrupt lock context for an acquire
- * and release pair.
- *
- * @see rtems_interrupt_lock_release_isr().
- */
-#define rtems_interrupt_lock_acquire_isr( _lock, _lock_context ) \
- _ISR_lock_Acquire( _lock, _lock_context )
-
-/**
- * @brief Releases an interrupt lock in the corresponding interrupt service
- * routine.
- *
- * The interrupt status will remain unchanged. On SMP configurations this
- * function releases an SMP lock.
- *
- * @param[in,out] _lock The interrupt lock.
- * @param[in,out] _lock_context The local interrupt lock context for an acquire
- * and release pair.
- *
- * @see rtems_interrupt_lock_acquire_isr().
- */
-#define rtems_interrupt_lock_release_isr( _lock, _lock_context ) \
- _ISR_lock_Release( _lock, _lock_context )
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/message.h b/cpukit/rtems/include/rtems/rtems/message.h
deleted file mode 100644
index 8ae9e156a1..0000000000
--- a/cpukit/rtems/include/rtems/rtems/message.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/**
- * @file rtems/rtems/message.h
- *
- * @defgroup ClassicMessageQueue Message Queues
- *
- * @ingroup ClassicRTEMS
- * @brief Message Queue Manager
- *
- * This include file contains all the constants and structures associated
- * with the Message Queue Manager. This manager provides a mechanism for
- * communication and synchronization between tasks using messages.
- *
- * Directives provided are:
- *
- * - create a queue
- * - get ID of a queue
- * - delete a queue
- * - put a message at the rear of a queue
- * - put a message at the front of a queue
- * - broadcast N messages to a queue
- * - receive message from a queue
- * - flush all messages on a queue
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_MESSAGE_H
-#define _RTEMS_RTEMS_MESSAGE_H
-
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/options.h>
-#include <rtems/rtems/attr.h>
-#include <rtems/score/object.h>
-#include <rtems/score/coremsg.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @ingroup ClassicMessageQueueImpl
- *
- * The following records define the control block used to manage
- * each message queue.
- */
-typedef struct {
- /** This field is the inherited object characteristics. */
- Objects_Control Object;
- /** This field is the instance of the SuperCore Message Queue. */
- CORE_message_queue_Control message_queue;
- /** This field is the attribute set as defined by the API. */
- rtems_attribute attribute_set;
-} Message_queue_Control;
-
-/**
- * @defgroup ClassicMessageQueue Message Queues
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Message Queue
- * Manager.
- */
-/**@{*/
-
-/**
- * @brief RTEMS Create Message Queue
- *
- * This routine implements the rtems_message_queue_create directive. The
- * message queue will have the @a name. If the @a attribute_set indicates
- * that the message queue is to be limited in the number of messages
- * that can be outstanding, then @a count indicates the maximum number of
- * messages that will be held. It returns the id of the created
- * message queue in @a id.
- *
- * @param[in] name is the user defined queue name
- * @param[in] count is the maximum message and reserved buffer count
- * @param[in] max_message_size is the maximum size of each message
- * @param[in] attribute_set is the process method
- * @param[in] id is the pointer to queue
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the @a id will
- * be filled in with the queue id.
- */
-rtems_status_code rtems_message_queue_create(
- rtems_name name,
- uint32_t count,
- size_t max_message_size,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Message Queue Name to Id
- *
- * This routine implements the rtems_message_queue_ident directive.
- * This directive returns the message queue ID associated with NAME.
- * If more than one message queue is named name, then the message
- * queue to which the ID belongs is arbitrary. node indicates the
- * extent of the search for the ID of the message queue named name.
- * The search can be limited to a particular node or allowed to
- * encompass all nodes.
- *
- * @param[in] name is the user defined message queue name
- * @param[in] node is the node(s) to be searched
- * @param[in] id is the pointer to message queue id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * *id filled with the message queue id
- */
-rtems_status_code rtems_message_queue_ident(
- rtems_name name,
- uint32_t node,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Delete Message Queue
- *
- * This routine implements the rtems_message_queue_delete directive. The
- * message queue indicated by ID is deleted.
- *
- * @param[in] id is the queue id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_message_queue_delete(
- rtems_id id
-);
-
-/**
- * @brief rtems_message_queue_send
- *
- * Message Queue Manager - rtems_message_queue_send
- *
- * This routine implements the rtems_message_queue_send directive.
- * This directive sends the message buffer to the message queue
- * indicated by ID. If one or more tasks is blocked waiting
- * to receive a message from this message queue, then one will
- * receive the message. The task selected to receive the
- * message is based on the task queue discipline algorithm in
- * use by this particular message queue. If no tasks are waiting,
- * then the message buffer will be placed at the REAR of the
- * chain of pending messages for this message queue.
- */
-rtems_status_code rtems_message_queue_send(
- rtems_id id,
- const void *buffer,
- size_t size
-);
-
-/**
- * @brief RTEMS Urgent Message Queue
- *
- * This routine implements the rtems_message_queue_urgent directive.
- * This directive has the same behavior as rtems_message_queue_send
- * except that if no tasks are waiting, the message buffer will
- * be placed at the FRONT of the chain of pending messages rather
- * than at the REAR.
- *
- * @param[in] id is the pointer to message queue
- * @param[in] buffer is the pointer to message buffer
- * @param[in] size is the size of message to send urgently
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_message_queue_urgent(
- rtems_id id,
- const void *buffer,
- size_t size
-);
-
-/**
- * @brief RTEMS Broadcast Message Queue
- *
- * This routine implements the rtems_message_queue_broadcast directive.
- * This directive sends the message buffer to all of the tasks blocked
- * waiting for a message on the message queue indicated by ID.
- * If no tasks are waiting, then the message buffer will not be queued.
- *
- * @param[in] id is the pointer to message queue
- * @param[in] buffer is the pointer to message buffer
- * @param[in] size is the size of message to broadcast
- * @param[in] count pointer to area to store number of threads made ready
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * *count filled in with number of threads made ready
- */
-rtems_status_code rtems_message_queue_broadcast(
- rtems_id id,
- const void *buffer,
- size_t size,
- uint32_t *count
-);
-
-/**
- * @brief RTEMS Message Queue Receive
- *
- * This routine implements the rtems_message_queue_receive directive.
- * This directive is invoked when the calling task wishes to receive
- * a message from the message queue indicated by ID. The received
- * message is to be placed in buffer. If no messages are outstanding
- * and the option_set indicates that the task is willing to block,
- * then the task will be blocked until a message arrives or until,
- * optionally, timeout clock ticks have passed.
- *
- * @param[in] id is the queue id
- * @param[in] buffer is the pointer to message buffer
- * @param[in] size is the size of message receive
- * @param[in] option_set is the options on receive
- * @param[in] timeout is the number of ticks to wait
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_message_queue_receive(
- rtems_id id,
- void *buffer,
- size_t *size,
- rtems_option option_set,
- rtems_interval timeout
-);
-
-/**
- * @brief rtems_message_queue_flush
- *
- * This routine implements the rtems_message_queue_flush directive.
- * This directive takes all outstanding messages for the message
- * queue indicated by ID and returns them to the inactive message
- * chain. The number of messages flushed is returned in COUNT.
- *
- * Message Queue Manager
- */
-rtems_status_code rtems_message_queue_flush(
- rtems_id id,
- uint32_t *count
-);
-
-/**
- * @brief RTEMS Message Queue Get Number Pending
- *
- * Message Queue Manager
- *
- * This routine implements the rtems_message_queue_get_number_pending
- * directive. This directive returns the number of pending
- * messages for the message queue indicated by ID
- * chain. The number of messages pending is returned in COUNT.
- */
-rtems_status_code rtems_message_queue_get_number_pending(
- rtems_id id,
- uint32_t *count
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/messageimpl.h b/cpukit/rtems/include/rtems/rtems/messageimpl.h
deleted file mode 100644
index df7cea6829..0000000000
--- a/cpukit/rtems/include/rtems/rtems/messageimpl.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * @file rtems/rtems/message.inl
- *
- * This include file contains the static inline implementation of all
- * inlined routines in the Message Manager.
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_MESSAGEIMPL_H
-#define _RTEMS_RTEMS_MESSAGEIMPL_H
-
-#include <rtems/rtems/message.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/coremsgimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicMessageQueueImpl Classic Message Queue Implementation
- *
- * @ingroup ClassicMessageQueue
- *
- * @{
- */
-
-/**
- * The following enumerated type details the modes in which a message
- * may be submitted to a message queue. The message may be posted
- * in a send or urgent fashion.
- */
-typedef enum {
- /**
- * This value indicates the user wants to send the message using the
- * normal message insertion protocol (FIFO or priority).
- */
- MESSAGE_QUEUE_SEND_REQUEST = 0,
- /**
- * This value indicates the user considers the message to be urgent
- * and wants it inserted at the head of the pending message queue.
- */
- MESSAGE_QUEUE_URGENT_REQUEST = 1
-} Message_queue_Submit_types;
-
-/**
- * The following defines the information control block used to
- * manage this class of objects.
- */
-extern Objects_Information _Message_queue_Information;
-
-/**
- * @brief Message_queue_Submit
- *
- * This routine implements the directives rtems_message_queue_send
- * and rtems_message_queue_urgent. It processes a message that is
- * to be submitted to the designated message queue. The message will
- * either be processed as a send send message which it will be inserted
- * at the rear of the queue or it will be processed as an urgent message
- * which will be inserted at the front of the queue.
- */
-rtems_status_code _Message_queue_Submit(
- rtems_id id,
- const void *buffer,
- size_t size,
- Message_queue_Submit_types submit_type
-);
-
-/**
- * @brief Deallocates a message queue control block into
- * the inactive chain of free message queue control blocks.
- *
- * This routine deallocates a message queue control block into
- * the inactive chain of free message queue control blocks.
- */
-RTEMS_INLINE_ROUTINE void _Message_queue_Free (
- Message_queue_Control *the_message_queue
-)
-{
- _Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
-}
-
-RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get(
- Objects_Id id,
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Context_initialize( queue_context );
- return (Message_queue_Control *) _Objects_Get(
- id,
- &queue_context->Lock_context.Lock_context,
- &_Message_queue_Information
- );
-}
-
-RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Allocate( void )
-{
- return (Message_queue_Control *)
- _Objects_Allocate( &_Message_queue_Information );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/rtems/msgmp.h>
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/modes.h b/cpukit/rtems/include/rtems/rtems/modes.h
deleted file mode 100644
index 547ae13e05..0000000000
--- a/cpukit/rtems/include/rtems/rtems/modes.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * @file rtems/rtems/modes.h
- *
- * @defgroup ClassicModes Modes
- *
- * @ingroup ClassicRTEMS
- * @brief RTEMS thread and RTEMS_ASR modes
- *
- * This include file contains all constants and structures associated
- * with the RTEMS thread and RTEMS_ASR modes.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_MODES_H
-#define _RTEMS_RTEMS_MODES_H
-
-#include <rtems/score/cpu.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicModes Modes
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the task modes supported
- * by the Classic API Task Manager.
- */
-/**@{*/
-
-/**
- * The following type defines the control block used to manage
- * each a mode set.
- */
-typedef uint32_t Modes_Control;
-
-/**
- * The following constants define the individual modes and masks
- * which may be used to compose a mode set and to alter modes.
- */
-#define RTEMS_ALL_MODE_MASKS 0x0000ffff
-
-/**
- * This mode constant is the default mode set.
- */
-#define RTEMS_DEFAULT_MODES 0x00000000
-
-/**
- * This mode constant is used when the user wishes to obtain their
- * current execution mode.
- */
-#define RTEMS_CURRENT_MODE 0
-
-/** This mode constant corresponds to the timeslice enable/disable bit. */
-#define RTEMS_TIMESLICE_MASK 0x00000200
-
-/** This mode constant corresponds to the preemption enable/disable bit. */
-#define RTEMS_PREEMPT_MASK 0x00000100
-
-/** This mode constant corresponds to the signal enable/disable bit. */
-#define RTEMS_ASR_MASK 0x00000400
-
-/** This mode constant corresponds to the interrupt enable/disable bits. */
-#define RTEMS_INTERRUPT_MASK CPU_MODES_INTERRUPT_MASK
-
-/** This mode constant is used to indicate preemption is enabled. */
-#define RTEMS_PREEMPT 0x00000000
-/** This mode constant is used to indicate preemption is disabled. */
-#define RTEMS_NO_PREEMPT 0x00000100
-
-/** This mode constant is used to indicate timeslicing is disabled. */
-#define RTEMS_NO_TIMESLICE 0x00000000
-/** This mode constant is used to indicate timeslicing is enabled. */
-#define RTEMS_TIMESLICE 0x00000200
-
-/** This mode constant is used to indicate signal processing is enabled. */
-#define RTEMS_ASR 0x00000000
-/** This mode constant is used to indicate signal processing is disabled. */
-#define RTEMS_NO_ASR 0x00000400
-
-/**
- * @brief RTEMS_INTERRUPT_LEVEL
- *
- * This function returns the processor dependent interrupt
- * level which corresponds to the requested interrupt level.
- *
- * @note RTEMS supports 256 interrupt levels using the least
- * significant eight bits of MODES.CONTROL. On any
- * particular CPU, fewer than 256 levels may be supported.
- */
-#define RTEMS_INTERRUPT_LEVEL( _mode_set ) \
- ( (_mode_set) & RTEMS_INTERRUPT_MASK )
-
-/**
- * @brief Interrupt Mask Variable
- *
- * This variable is used by bindings from languages other than C and C++.
- */
-extern const uint32_t rtems_interrupt_mask;
-
-/**
- * @brief Body for RTEMS_INTERRUPT_LEVEL Macro
- *
- * @param[in] level is the desired interrupt level
- *
- * @retval This methods returns a mode with the desired interrupt
- * @a level in the proper bitfield location.
- *
- * @note This variable is used by bindings from languages other than
- * C and C++.
- */
-Modes_Control rtems_interrupt_level_body(
- uint32_t level
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/modesimpl.h b/cpukit/rtems/include/rtems/rtems/modesimpl.h
deleted file mode 100644
index 8c1acc7cb9..0000000000
--- a/cpukit/rtems/include/rtems/rtems/modesimpl.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicModesImpl
- *
- * @brief Classic Modes Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_MODESIMPL_H
-#define _RTEMS_RTEMS_MODESIMPL_H
-
-#include <rtems/rtems/modes.h>
-#include <rtems/score/isrlevel.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicModesImpl Classic Modes Implementation
- *
- * @ingroup ClassicModes
- *
- * @{
- */
-
-/**
- * @brief Checks if any of the mode flags in mask are set in mode_set.
- *
- * This function returns TRUE if any of the mode flags in mask
- * are set in mode_set, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Modes_Mask_changed (
- Modes_Control mode_set,
- Modes_Control masks
-)
-{
- return ( mode_set & masks ) ? true : false;
-}
-
-/**
- * @brief Checks if mode_set says that Asynchronous Signal Processing is disabled.
- *
- * This function returns TRUE if mode_set indicates that Asynchronous
- * Signal Processing is disabled, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Modes_Is_asr_disabled (
- Modes_Control mode_set
-)
-{
- return (mode_set & RTEMS_ASR_MASK) == RTEMS_NO_ASR;
-}
-
-/**
- * @brief Checks if mode_set indicates that preemption is enabled.
- *
- * This function returns TRUE if mode_set indicates that preemption
- * is enabled, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Modes_Is_preempt (
- Modes_Control mode_set
-)
-{
- return (mode_set & RTEMS_PREEMPT_MASK) == RTEMS_PREEMPT;
-}
-
-/**
- * @brief Checks if mode_set indicates that timeslicing is enabled.
- *
- * This function returns TRUE if mode_set indicates that timeslicing
- * is enabled, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Modes_Is_timeslice (
- Modes_Control mode_set
-)
-{
- return (mode_set & RTEMS_TIMESLICE_MASK) == RTEMS_TIMESLICE;
-}
-
-/**
- * @brief Gets the interrupt level portion of the mode_set.
- *
- * This function returns the interrupt level portion of the mode_set.
- */
-RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
- Modes_Control mode_set
-)
-{
- return ( mode_set & RTEMS_INTERRUPT_MASK );
-}
-
-/**
- * @brief Sets the current interrupt level to that specified in the mode_set.
- *
- * This routine sets the current interrupt level to that specified
- * in the mode_set.
- */
-RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
- Modes_Control mode_set
-)
-{
- _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
-}
-
-/**
- * @brief Changes the modes in old_mode_set indicated by
- * mask to the requested values in new_mode_set.
- *
- * This routine changes the modes in old_mode_set indicated by
- * mask to the requested values in new_mode_set. The resulting
- * mode set is returned in out_mode_set and the modes that changed
- * is returned in changed.
- */
-RTEMS_INLINE_ROUTINE void _Modes_Change (
- Modes_Control old_mode_set,
- Modes_Control new_mode_set,
- Modes_Control mask,
- Modes_Control *out_mode_set,
- Modes_Control *changed
-)
-{
- Modes_Control _out_mode;
-
- _out_mode = old_mode_set;
- _out_mode &= ~mask;
- _out_mode |= new_mode_set & mask;
- *changed = _out_mode ^ old_mode_set;
- *out_mode_set = _out_mode;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/mp.h b/cpukit/rtems/include/rtems/rtems/mp.h
deleted file mode 100644
index f1b93b6751..0000000000
--- a/cpukit/rtems/include/rtems/rtems/mp.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * @file rtems/rtems/mp.h
- *
- * @defgroup ClassicMP Multiprocessing
- *
- * @ingroup ClassicRTEMS
- * @brief Multiprocessing Manager
- *
- * This include file contains all the constants and structures associated
- * with the Multiprocessing Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_MP_H
-#define _RTEMS_RTEMS_MP_H
-
-/**
- * @defgroup ClassicMP Multiprocessing
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the distributed
- * Multiprocessing support in the Classic API.
- */
-/**@{*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief RTEMS Multiprocessing Announce
- *
- * This routine implements the MULTIPROCESSING_ANNOUNCE directive.
- * It is invoked by the MPCI layer to indicate that an MPCI packet
- * has been received.
- */
-void rtems_multiprocessing_announce ( void );
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/msgmp.h b/cpukit/rtems/include/rtems/rtems/msgmp.h
deleted file mode 100644
index 3dabd8d46b..0000000000
--- a/cpukit/rtems/include/rtems/rtems/msgmp.h
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * @file rtems/rtems/msgmp.h
- *
- * @brief Message Manager MP Support
- *
- * This include file contains all the constants and structures associated
- * with the Multiprocessing Support in the Message Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_MSGMP_H
-#define _RTEMS_RTEMS_MSGMP_H
-
-#ifndef _RTEMS_RTEMS_MESSAGEIMPL_H
-# error "Never use <rtems/rtems/msgmp.h> directly; include <rtems/rtems/messageimpl.h> instead."
-#endif
-
-#include <rtems/score/mpciimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicMsgMP Message Queue MP Support
- *
- * @ingroup ClassicMP
- *
- * This encapsulates functionality related to the transparent multiprocessing
- * support within the Classic API Message Queue Manager.
- */
-/*{*/
-
-/**
- * The following enumerated type defines the list of
- * remote message queue operations.
- */
-typedef enum {
- MESSAGE_QUEUE_MP_ANNOUNCE_CREATE = 0,
- MESSAGE_QUEUE_MP_ANNOUNCE_DELETE = 1,
- MESSAGE_QUEUE_MP_EXTRACT_PROXY = 2,
- MESSAGE_QUEUE_MP_RECEIVE_REQUEST = 3,
- MESSAGE_QUEUE_MP_RECEIVE_RESPONSE = 4,
- MESSAGE_QUEUE_MP_SEND_REQUEST = 5,
- MESSAGE_QUEUE_MP_SEND_RESPONSE = 6,
- MESSAGE_QUEUE_MP_URGENT_REQUEST = 7,
- MESSAGE_QUEUE_MP_URGENT_RESPONSE = 8,
- MESSAGE_QUEUE_MP_BROADCAST_REQUEST = 9,
- MESSAGE_QUEUE_MP_BROADCAST_RESPONSE = 10,
- MESSAGE_QUEUE_MP_FLUSH_REQUEST = 11,
- MESSAGE_QUEUE_MP_FLUSH_RESPONSE = 12,
- MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST = 13,
- MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE = 14
-} Message_queue_MP_Remote_operations;
-
-/**
- * The following data structure defines the packet used to perform
- * remote message queue operations.
- */
-typedef struct {
- rtems_packet_prefix Prefix;
- Message_queue_MP_Remote_operations operation;
- rtems_name name;
- rtems_option option_set;
- Objects_Id proxy_id;
- uint32_t count;
- size_t size;
- uint32_t pad0;
- CORE_message_queue_Buffer Buffer;
-} Message_queue_MP_Packet;
-
-#define MESSAGE_QUEUE_MP_PACKET_SIZE \
- offsetof(Message_queue_MP_Packet, Buffer.buffer)
-
-RTEMS_INLINE_ROUTINE bool _Message_queue_MP_Is_remote( Objects_Id id )
-{
- return _Objects_MP_Is_remote( id, &_Message_queue_Information );
-}
-
-/**
- * @brief Message_queue_Core_message_queue_mp_support
- *
- * Input parameters:
- * the_thread - the remote thread the message was submitted to
- * id - id of the message queue
- *
- * Output parameters: NONE
- */
-void _Message_queue_Core_message_queue_mp_support (
- Thread_Control *the_thread,
- rtems_id id
-);
-
-/**
- * @brief _Message_queue_MP_Send_process_packet
- *
- * This routine performs a remote procedure call so that a
- * process operation can be performed on another node.
- */
-void _Message_queue_MP_Send_process_packet (
- Message_queue_MP_Remote_operations operation,
- Objects_Id message_queue_id,
- rtems_name name,
- Objects_Id proxy_id
-);
-
-/**
- * @brief Issues a remote rtems_message_queue_broadcast() request.
- */
-rtems_status_code _Message_queue_MP_Broadcast(
- rtems_id id,
- const void *buffer,
- size_t size,
- uint32_t *count
-);
-
-/**
- * @brief Issues a remote rtems_message_queue_flush() request.
- */
-rtems_status_code _Message_queue_MP_Flush(
- rtems_id id,
- uint32_t *count
-);
-
-/**
- * @brief Issues a remote rtems_message_queue_get_number_pending() request.
- */
-rtems_status_code _Message_queue_MP_Get_number_pending(
- rtems_id id,
- uint32_t *count
-);
-
-/**
- * @brief Issues a remote rtems_message_queue_receive() request.
- */
-rtems_status_code _Message_queue_MP_Receive(
- rtems_id id,
- void *buffer,
- size_t *size,
- rtems_option option_set,
- rtems_interval timeout
-);
-
-/**
- * @brief Issues a remote rtems_message_queue_send() request.
- */
-rtems_status_code _Message_queue_MP_Send(
- rtems_id id,
- const void *buffer,
- size_t size
-);
-
-/**
- * @brief Issues a remote rtems_message_queue_urgent() request.
- */
-rtems_status_code _Message_queue_MP_Urgent(
- rtems_id id,
- const void *buffer,
- size_t size
-);
-
-/**
- *
- * @brief _Message_queue_MP_Process_packet
- *
- * This routine performs the actions specific to this package for
- * the request from another node.
- */
-void _Message_queue_MP_Process_packet (
- rtems_packet_prefix *the_packet_prefix
-);
-
-/**
- * @brief _Message_queue_MP_Send_object_was_deleted
- *
- * This routine is invoked indirectly by the thread queue
- * when a proxy has been removed from the thread queue and
- * the remote node must be informed of this.
- */
-void _Message_queue_MP_Send_object_was_deleted (
- Thread_Control *the_proxy,
- Objects_Id mp_id
-);
-
-/**
- * @brief _Message_queue_MP_Send_extract_proxy
- *
- * This routine is invoked when a task is deleted and it
- * has a proxy which must be removed from a thread queue and
- * the remote node must be informed of this.
- */
-void _Message_queue_MP_Send_extract_proxy (
- Thread_Control *the_thread,
- Objects_Id id
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of file */
diff --git a/cpukit/rtems/include/rtems/rtems/object.h b/cpukit/rtems/include/rtems/rtems/object.h
deleted file mode 100644
index 2652915462..0000000000
--- a/cpukit/rtems/include/rtems/rtems/object.h
+++ /dev/null
@@ -1,370 +0,0 @@
-/**
- * @file rtems/rtems/object.h
- *
- * @defgroup ClassicClassInfo Object Class Information
- *
- * @ingroup ClassicRTEMS
- * @brief Classic API interfaces to Object Services
- *
- * This include file defines Classic API interfaces to Object Services.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_OBJECT_H
-#define _RTEMS_RTEMS_OBJECT_H
-
-#include <stdint.h>
-#include <rtems/score/object.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicClassInfo Object Class Information
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Object
- * Class Services.
- */
-/**@{*/
-
-/**
- * This structure is used to return information to the application
- * about the objects configured for a specific API/Class combination.
- */
-typedef struct {
- /** This field is the minimum valid object Id for this class. */
- rtems_id minimum_id;
- /** This field is the maximum valid object Id for this class. */
- rtems_id maximum_id;
- /** This field is the number of object instances configured for this class. */
- uint32_t maximum;
- /** This field indicates if the class is configured for auto-extend. */
- bool auto_extend;
- /** This field is the number of currently unallocated objects. */
- uint32_t unallocated;
-} rtems_object_api_class_information;
-
-/**
- * @brief Build Object Id
- *
- * This function returns an object id composed of the
- * specified @a api, @a class, @a node,
- * and @a index.
- *
- * @param[in] _api indicates the api to use for the Id
- * @param[in] _class indicates the class to use for the Id
- * @param[in] _node indicates the node to use for the Id
- * @param[in] _index indicates the index to use for the Id
- *
- * @retval This method returns an object Id built from the
- * specified values.
- *
- * @note A body is also provided.
- */
-#define rtems_build_id( _api, _class, _node, _index ) \
- _Objects_Build_id( _api, _class, _node, _index )
-
-/**
- * @brief Build Thirty-Two Bit Object Name
- *
- * RTEMS Object Helper -- Build an Object Id
- *
- * This function returns an object name composed of the four characters
- * C1, C2, C3, and C4.
- *
- * @param[in] _C1 is the first character of the name
- * @param[in] _C2 is the second character of the name
- * @param[in] _C3 is the third character of the name
- * @param[in] _C4 is the fourth character of the name
- *
- * @note This must be implemented as a macro for use in
- * Configuration Tables. A body is also provided.
- *
- */
-#define rtems_build_name( _C1, _C2, _C3, _C4 ) \
- _Objects_Build_name( _C1, _C2, _C3, _C4 )
-
-/**
- * @brief Obtain Name of Object
- *
- * This directive returns the name associated with the specified
- * object ID.
- *
- * @param[in] id is the Id of the object to obtain the name of.
- * @param[out] name will be set to the name of the object
- *
- * @note The object must be have a name of the 32-bit form.
- *
- * @retval @a *name will contain user defined object name
- * @retval @a RTEMS_SUCCESSFUL - if successful
- * @retval error code - if unsuccessful
- */
-rtems_status_code rtems_object_get_classic_name(
- rtems_id id,
- rtems_name *name
-);
-
-/**
- * @brief Obtain Object Name as String
- *
- * This directive returns the name associated with the specified
- * object ID.
- *
- * @param[in] id is the Id of the object to obtain the name of
- * @param[in] length is the length of the output name buffer
- * @param[out] name will be set to the name of the object
- *
- * @retval @a *name will contain user defined object name
- * @retval @a name - if successful
- * @retval @a NULL - if unsuccessful
- */
-char *rtems_object_get_name(
- rtems_id id,
- size_t length,
- char *name
-);
-
-/**
- * @brief Set Name of Object
- *
- * This method allows the caller to set the name of an
- * object. This can be used to set the name of objects
- * which do not have a naming scheme per their API.
- *
- * RTEMS Object Helper -- Set Name of Object as String
- *
- * @param[in] id is the Id of the object to obtain the name of
- * @param[out] name will be set to the name of the object
- *
- * @retval @a *name will contain user defined object name
- * @retval @a RTEMS_SUCCESSFUL - if successful
- * @retval error code - if unsuccessful
- */
-rtems_status_code rtems_object_set_name(
- rtems_id id,
- const char *name
-);
-
-/**
- * @brief Get API Portion of Object Id
- *
- * RTEMS Object Helper -- Extract API From Id
- *
- * This function returns the API portion of the Id.
- *
- * @param[in] _id is the Id of the object to obtain the API from
- *
- * @retval This method returns the API portion of the provided
- * @a _id.
- *
- * @note This method does NOT validate the @a _id provided.
- *
- * @note A body is also provided.
- */
-#define rtems_object_id_get_api( _id ) \
- _Objects_Get_API( _id )
-
-/**
- * @brief Get Class Portion of Object Id
- *
- * This function returns the class portion of the @a _id ID.
- *
- * @param[in] _id is the Id of the object to obtain the class from
- *
- * @retval This method returns the class portion of the provided
- * @a _id.
- *
- * @note This method does NOT validate the @a _id provided.
- *
- * @note A body is also provided.
- */
-#define rtems_object_id_get_class( _id ) \
- _Objects_Get_class( _id )
-
-/**
- * @brief Get Node Portion of Object Id
- *
- * This function returns the node portion of the ID.
- *
- * @param[in] _id is the Id of the object to obtain the node from
- *
- * @retval This method returns the node portion of the provided
- * @a _id.
- *
- * @note This method does NOT validate the @a _id provided.
- *
- * @note A body is also provided.
- */
-#define rtems_object_id_get_node( _id ) \
- _Objects_Get_node( _id )
-
-/**
- * @brief Get Index Portion of Object Id
- *
- * This function returns the index portion of the ID.
- *
- * @param[in] _id is the Id of the object to obtain the index from
- *
- * @retval This method returns the index portion of the provided
- * @a _id.
- *
- * @note This method does NOT validate the @a _id provided.
- *
- * @note A body is also provided.
- */
-#define rtems_object_id_get_index( _id ) \
- _Objects_Get_index( _id )
-
-/**
- * @brief Get Lowest Valid API Index
- *
- * This method returns the lowest valid value for the API
- * portion of an RTEMS object Id.
- *
- * @retval This method returns the least valid value for
- * the API portion of an RTEMS object Id.
- *
- * @note A body is also provided.
- */
-#define rtems_object_id_api_minimum() \
- OBJECTS_INTERNAL_API
-
-/**
- * @brief Get Highest Valid API Index
- *
- * This method returns the highest valid value for the API
- * portion of an RTEMS object Id.
- *
- * @retval This method returns the greatest valid value for
- * the API portion of an RTEMS object Id.
- *
- * @note A body is also provided.
- */
-#define rtems_object_id_api_maximum() \
- OBJECTS_APIS_LAST
-
-/**
- * @brief Get Lowest Valid Class Value
- *
- * This method returns the lowest valid value Class for the
- * specified @a api. Each API supports a different number
- * of object classes.
- *
- * @param[in] api is the API to obtain the minimum class of
- *
- * @retval This method returns the least valid value for
- * class number for the specified @a api.
- * RTEMS Object Helper -- Get Least Valid Class for an API
- */
-int rtems_object_api_minimum_class(
- int api
-);
-
-/**
- * @brief Get Highest Valid Class Value
- *
- * This method returns the highest valid value Class for the
- * specified @a api. Each API supports a different number
- * of object classes.
- *
- * @param[in] api is the API to obtain the maximum class of
- *
- * @retval This method returns the greatet valid value for
- * class number for the specified @a api.
- */
-int rtems_object_api_maximum_class(
- int api
-);
-
-
-/**
- * @brief Get Highest Valid Class Value
- *
- * This method returns the lowest valid value Class for the
- * specified @a api. Each API supports a different number
- * of object classes.
- *
- * @param[in] api is the API to obtain the maximum class of
- *
- * @retval This method returns the least valid value for
- * class number for the specified @a api.
- */
-int rtems_object_id_api_maximum_class(
- int api
-);
-
-/**
- * @brief Get API Name
- *
- * This method returns a string containing the name of the
- * specified @a api.
- *
- * @param[in] api is the API to obtain the name of
- *
- * @retval If successful, this method returns the name of
- * the specified @a api. Otherwise, it returns
- * the string "BAD API"
- */
-const char *rtems_object_get_api_name(
- int api
-);
-
-/**
- * @brief Get Class Name
- *
- * This method returns a string containing the name of the
- * @a class from the specified @a api.
- *
- * @param[in] the_api is the API for the class
- * @param[in] the_class is the class to obtain the name of
- *
- * @retval If successful, this method returns the name of
- * the specified @a class. Otherwise, it returns
- * the string "BAD CLASS"
- */
-const char *rtems_object_get_api_class_name(
- int the_api,
- int the_class
-);
-
-/**
- * @brief Get Class Information
- *
- * This method returns a string containing the name of the
- * @a the_class from the specified @a api.
- *
- * @param[in] the_api is the API for the class
- * @param[in] the_class is the class to obtain information about
- * @param[in] info points to the information structure to fill in
- *
- * @retval If successful, this method returns the name of
- * RTEMS_SUCCESSFUL with @a *info filled in. Otherwise,
- * a status is returned to indicate the error.
- *
- */
-rtems_status_code rtems_object_get_class_information(
- int the_api,
- int the_class,
- rtems_object_api_class_information *info
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/options.h b/cpukit/rtems/include/rtems/rtems/options.h
deleted file mode 100644
index 752aefda2e..0000000000
--- a/cpukit/rtems/include/rtems/rtems/options.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * @file rtems/rtems/options.h
- *
- * @defgroup ClassicOptions Classic API Options
- *
- * @ingroup ClassicRTEMS
- * @brief Options Available on Many Directives
- *
- * This include file contains information which defines the
- * options available on many directives.
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_OPTIONS_H
-#define _RTEMS_RTEMS_OPTIONS_H
-
-#include <rtems/score/basedefs.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicOptions Classic API Options
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the options argument
- * to Classic API blocking operations. The primary option is whether
- * or not a task is willing to wait for the operation to complete.
- */
-/**@{*/
-
-/**
- * The following type defines the control block used to manage
- * option sets.
- */
-typedef uint32_t rtems_option;
-
-/**
- * The following constants define the individual options which may
- * be used to compose an option set.
- */
-#define RTEMS_DEFAULT_OPTIONS 0x00000000
-
-/**
- * This option constants indicates that the task is to wait on resource.
- */
-#define RTEMS_WAIT 0x00000000
-/**
- * This option constants indicates that the task is to not wait on
- * the resource. If it is not available, return immediately with
- * a status to indicate unsatisfied.
- */
-#define RTEMS_NO_WAIT 0x00000001
-
-/**
- * This option constants indicates that the task wishes to wait until
- * all events of interest are available.
- */
-#define RTEMS_EVENT_ALL 0x00000000
-
-/**
- * This option constants indicates that the task wishes to wait until
- * ANY events of interest are available.
- */
-#define RTEMS_EVENT_ANY 0x00000002
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/optionsimpl.h b/cpukit/rtems/include/rtems/rtems/optionsimpl.h
deleted file mode 100644
index 0263fcf78d..0000000000
--- a/cpukit/rtems/include/rtems/rtems/optionsimpl.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicOptionsImpl
- *
- * @brief Classic Options Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_OPTIONSIMPL_H
-#define _RTEMS_RTEMS_OPTIONSIMPL_H
-
-#include <rtems/rtems/options.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicOptionsImpl Classic Options Implementation
- *
- * @ingroup ClassicOptions
- *
- * @{
- */
-
-/**
- * @brief Checks if the RTEMS_NO_WAIT option is enabled in option_set.
- *
- * This function returns TRUE if the RTEMS_NO_WAIT option is enabled in
- * option_set, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (
- rtems_option option_set
-)
-{
- return (option_set & RTEMS_NO_WAIT) ? true : false;
-}
-
-/**
- * @brief Checks if the RTEMS_EVENT_ANY option is enabled in OPTION_SET.
- *
- * This function returns TRUE if the RTEMS_EVENT_ANY option is enabled in
- * OPTION_SET, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Options_Is_any (
- rtems_option option_set
-)
-{
- return (option_set & RTEMS_EVENT_ANY) ? true : false;
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/part.h b/cpukit/rtems/include/rtems/rtems/part.h
deleted file mode 100644
index 5b840cc96c..0000000000
--- a/cpukit/rtems/include/rtems/rtems/part.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/**
- * @file rtems/rtems/part.h
- *
- * @defgroup ClassicPart Partitions
- *
- * @ingroup ClassicRTEMS
- * @brief Partition Manager
- *
- * This include file contains all the constants and structures associated
- * with the Partition Manager. This manager provides facilities to
- * dynamically allocate memory in fixed-sized units which are returned
- * as buffers.
- *
- * Directives provided are:
- *
- * - create a partition
- * - get an ID of a partition
- * - delete a partition
- * - get a buffer from a partition
- * - return a buffer to a partition
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_PART_H
-#define _RTEMS_RTEMS_PART_H
-
-#include <rtems/rtems/attr.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/types.h>
-#include <rtems/score/isrlock.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicPart Partitions
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the
- * Classic API Partition Manager.
- */
-/**@{*/
-
-/**
- * The following defines the control block used to manage each partition.
- */
-typedef struct {
- /** This field is the object management portion of a Partition instance. */
- Objects_Control Object;
- /** This field is the lock of the Partition. */
- ISR_LOCK_MEMBER( Lock )
- /** This field is the physical starting address of the Partition. */
- void *starting_address;
- /** This field is the size of the Partition in bytes. */
- intptr_t length;
- /** This field is the size of each buffer in bytes */
- uint32_t buffer_size;
- /** This field is the attribute set provided at create time. */
- rtems_attribute attribute_set;
- /** This field is the of allocated buffers. */
- uint32_t number_of_used_blocks;
- /** This field is the chain used to manage unallocated buffers. */
- Chain_Control Memory;
-} Partition_Control;
-
-/**
- * @brief RTEMS Partition Create
- *
- * Partition Manager
- *
- * This routine implements the rtems_partition_create directive. The
- * partition will have the name name. The memory area managed by
- * the partition is of length bytes and starts at starting_address.
- * The memory area will be divided into as many buffers of
- * buffer_size bytes as possible. The attribute_set determines if
- * the partition is global or local. It returns the id of the
- * created partition in ID.
- */
-rtems_status_code rtems_partition_create(
- rtems_name name,
- void *starting_address,
- uint32_t length,
- uint32_t buffer_size,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Partition Ident
- *
- * This routine implements the rtems_partition_ident directive.
- * This directive returns the partition ID associated with name.
- * If more than one partition is named name, then the partition
- * to which the ID belongs is arbitrary. node indicates the
- * extent of the search for the ID of the partition named name.
- * The search can be limited to a particular node or allowed to
- * encompass all nodes.
- *
- * @param[in] name is the user defined partition name
- * @param[in] node is(are) the node(s) to be searched
- * @param[in] id is the pointer to partition id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * *id filled in with the partition id
- */
-rtems_status_code rtems_partition_ident(
- rtems_name name,
- uint32_t node,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Delete Partition
- *
- * This routine implements the rtems_partition_delete directive. The
- * partition indicated by ID is deleted, provided that none of its buffers
- * are still allocated.
- *
- * @param[in] id is the partition id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_partition_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Get Partition Buffer
- *
- * This routine implements the rtems_partition_get_buffer directive. It
- * attempts to allocate a buffer from the partition associated with ID.
- * If a buffer is allocated, its address is returned in buffer.
- *
- * @param[in] id is the partition id
- * @param[out] buffer is the pointer to buffer address
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_partition_get_buffer(
- rtems_id id,
- void **buffer
-);
-
-/**
- * @brief rtems_partition_return_buffer
- *
- * This routine implements the rtems_partition_return_buffer directive. It
- * frees the buffer to the partition associated with ID. The buffer must
- * have been previously allocated from the same partition.
- */
-rtems_status_code rtems_partition_return_buffer(
- rtems_id id,
- void *buffer
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/partimpl.h b/cpukit/rtems/include/rtems/rtems/partimpl.h
deleted file mode 100644
index 13ee86b4c2..0000000000
--- a/cpukit/rtems/include/rtems/rtems/partimpl.h
+++ /dev/null
@@ -1,223 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicPartImpl
- *
- * @brief Classic Partition Manager Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_PARTIMPL_H
-#define _RTEMS_RTEMS_PARTIMPL_H
-
-#include <rtems/rtems/part.h>
-#include <rtems/score/chainimpl.h>
-#include <rtems/score/objectimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicPartImpl Classic Partition Manager Implementation
- *
- * @ingroup ClassicPart
- *
- * @{
- */
-
-/**
- * The following defines the information control block used to
- * manage this class of objects.
- */
-extern Objects_Information _Partition_Information;
-
-/**
- * @brief Allocate a buffer from the_partition.
- *
- * This function attempts to allocate a buffer from the_partition.
- * If successful, it returns the address of the allocated buffer.
- * Otherwise, it returns NULL.
- */
-RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
- Partition_Control *the_partition
-)
-{
- return _Chain_Get_unprotected( &the_partition->Memory );
-}
-
-/**
- * @brief Frees the_buffer to the_partition.
- *
- * This routine frees the_buffer to the_partition.
- */
-RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
- Partition_Control *the_partition,
- Chain_Node *the_buffer
-)
-{
- _Chain_Append_unprotected( &the_partition->Memory, the_buffer );
-}
-
-/**
- * @brief Checks whether is on a valid buffer boundary for the_partition.
- *
- * This function returns TRUE if the_buffer is on a valid buffer
- * boundary for the_partition, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_on_boundary (
- void *the_buffer,
- Partition_Control *the_partition
-)
-{
- uint32_t offset;
-
- offset = (uint32_t) _Addresses_Subtract(
- the_buffer,
- the_partition->starting_address
- );
-
- return ((offset % the_partition->buffer_size) == 0);
-}
-
-/**
- * @brief Checks whether the_buffer is a valid buffer from the_partition.
- *
- * This function returns TRUE if the_buffer is a valid buffer from
- * the_partition, otherwise FALSE is returned.
- */
-RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_valid (
- Chain_Node *the_buffer,
- Partition_Control *the_partition
-)
-{
- void *starting;
- void *ending;
-
- starting = the_partition->starting_address;
- ending = _Addresses_Add_offset( starting, the_partition->length );
-
- return (
- _Addresses_Is_in_range( the_buffer, starting, ending ) &&
- _Partition_Is_buffer_on_boundary( the_buffer, the_partition )
- );
-}
-
-/**
- * @brief Checks if partition is buffer size aligned.
- *
- * This function returns TRUE if the use of the specified buffer_size
- * will result in the allocation of buffers whose first byte is
- * properly aligned, and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (
- uint32_t buffer_size
-)
-{
- return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);
-}
-
-/**
- * @brief Allocates a partition control block from the
- * inactive chain of free partition control blocks.
- *
- * This function allocates a partition control block from
- * the inactive chain of free partition control blocks.
- */
-RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )
-{
- return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
-}
-
-RTEMS_INLINE_ROUTINE void _Partition_Initialize(
- Partition_Control *the_partition,
- void *starting_address,
- uint32_t length,
- uint32_t buffer_size,
- rtems_attribute attribute_set
-)
-{
- the_partition->starting_address = starting_address;
- the_partition->length = length;
- the_partition->buffer_size = buffer_size;
- the_partition->attribute_set = attribute_set;
- the_partition->number_of_used_blocks = 0;
-
- _Chain_Initialize(
- &the_partition->Memory,
- starting_address,
- length / buffer_size,
- buffer_size
- );
-
- _ISR_lock_Initialize( &the_partition->Lock, "Partition" );
-}
-
-RTEMS_INLINE_ROUTINE void _Partition_Destroy(
- Partition_Control *the_partition
-)
-{
- _ISR_lock_Destroy( &the_partition->Lock );
-}
-
-/**
- * @brief Frees a partition control block to the
- * inactive chain of free partition control blocks.
- *
- * This routine frees a partition control block to the
- * inactive chain of free partition control blocks.
- */
-RTEMS_INLINE_ROUTINE void _Partition_Free (
- Partition_Control *the_partition
-)
-{
- _Objects_Free( &_Partition_Information, &the_partition->Object );
-}
-
-RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get(
- Objects_Id id,
- ISR_lock_Context *lock_context
-)
-{
- return (Partition_Control *) _Objects_Get(
- id,
- lock_context,
- &_Partition_Information
- );
-}
-
-RTEMS_INLINE_ROUTINE void _Partition_Acquire_critical(
- Partition_Control *the_partition,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_Acquire( &the_partition->Lock, lock_context );
-}
-
-RTEMS_INLINE_ROUTINE void _Partition_Release(
- Partition_Control *the_partition,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_Release_and_ISR_enable( &the_partition->Lock, lock_context );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/rtems/partmp.h>
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/partmp.h b/cpukit/rtems/include/rtems/rtems/partmp.h
deleted file mode 100644
index b9eaa08b8c..0000000000
--- a/cpukit/rtems/include/rtems/rtems/partmp.h
+++ /dev/null
@@ -1,144 +0,0 @@
-/**
- * @file rtems/rtems/partmp.h
- *
- * @brief MP Support in Partition Manager
- *
- * This include file contains all the constants and structures associated
- * with the Multiprocessing Support in the Partition Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_PARTMP_H
-#define _RTEMS_RTEMS_PARTMP_H
-
-#ifndef _RTEMS_RTEMS_PARTIMPL_H
-# error "Never use <rtems/rtems/partmp.h> directly; include <rtems/rtems/partimpl.h> instead."
-#endif
-
-#include <rtems/score/mpciimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicPartMP Partition MP Support
- *
- * @ingroup ClassicMP
- *
- * This encapsulates functionality related to the transparent multiprocessing
- * support within the Classic API Partition Manager.
- */
-/*{*/
-
-/**
- * The following enumerated type defines the list of
- * remote partition operations.
- */
-typedef enum {
- PARTITION_MP_ANNOUNCE_CREATE = 0,
- PARTITION_MP_ANNOUNCE_DELETE = 1,
- PARTITION_MP_EXTRACT_PROXY = 2,
- PARTITION_MP_GET_BUFFER_REQUEST = 3,
- PARTITION_MP_GET_BUFFER_RESPONSE = 4,
- PARTITION_MP_RETURN_BUFFER_REQUEST = 5,
- PARTITION_MP_RETURN_BUFFER_RESPONSE = 6
-} Partition_MP_Remote_operations;
-
-/**
- * The following data structure defines the packet used to perform
- * remote partition operations.
- */
-typedef struct {
- rtems_packet_prefix Prefix;
- Partition_MP_Remote_operations operation;
- rtems_name name;
- void *buffer;
- Objects_Id proxy_id;
-} Partition_MP_Packet;
-
-RTEMS_INLINE_ROUTINE bool _Partition_MP_Is_remote( Objects_Id id )
-{
- return _Objects_MP_Is_remote( id, &_Partition_Information );
-}
-
-/**
- * @brief Partition_MP_Send_process_packet
- *
- * Multiprocessing Support for the Partition Manager
- *
- * This routine performs a remote procedure call so that a
- * process operation can be performed on another node.
- */
-void _Partition_MP_Send_process_packet (
- Partition_MP_Remote_operations operation,
- Objects_Id partition_id,
- rtems_name name,
- Objects_Id proxy_id
-);
-
-/**
- * @brief Issues a remote rtems_partition_get_buffer() request.
- */
-rtems_status_code _Partition_MP_Get_buffer(
- rtems_id id,
- void **buffer
-);
-
-/**
- * @brief Issues a remote rtems_partition_return_buffer() request.
- */
-rtems_status_code _Partition_MP_Return_buffer(
- rtems_id id,
- void *buffer
-);
-
-/**
- *
- * @brief Partition_MP_Process_packet
- *
- * This routine performs the actions specific to this package for
- * the request from another node.
- */
-void _Partition_MP_Process_packet (
- rtems_packet_prefix *the_packet_prefix
-);
-
-/*
- * @brief Partition_MP_Send_object_was_deleted
- *
- * This routine is invoked indirectly by the thread queue
- * when a proxy has been removed from the thread queue and
- * the remote node must be informed of this.
- *
- * This routine is not needed by the Partition since a partition
- * cannot be deleted when buffers are in use.
- */
-
-/**
- * @brief Partition_MP_Send_extract_proxy
- *
- * This routine is invoked when a task is deleted and it
- * has a proxy which must be removed from a thread queue and
- * the remote node must be informed of this.
- */
-void _Partition_MP_Send_extract_proxy (
- Thread_Control *the_thread,
- Objects_Id id
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of file */
diff --git a/cpukit/rtems/include/rtems/rtems/ratemon.h b/cpukit/rtems/include/rtems/rtems/ratemon.h
deleted file mode 100644
index ca48a92983..0000000000
--- a/cpukit/rtems/include/rtems/rtems/ratemon.h
+++ /dev/null
@@ -1,430 +0,0 @@
-/**
- * @file rtems/rtems/ratemon.h
- *
- * @defgroup ClassicRateMon Rate Monotonic Scheduler
- *
- * @ingroup ClassicRTEMS
- * @brief Classic API Rate Monotonic Manager.
- *
- * This include file contains all the constants, structures, and
- * prototypes associated with the Rate Monotonic Manager. This manager
- * provides facilities to implement threads which execute in a periodic
- * fashion.
- *
- * Directives provided are:
- *
- * - create a rate monotonic timer
- * - cancel a period
- * - delete a rate monotonic timer
- * - conclude current and start the next period
- * - obtain status information on a period
- * - obtain the number of postponed jobs
- */
-
-/* COPYRIGHT (c) 1989-2009, 2016.
- * On-Line Applications Research Corporation (OAR).
- * COPYRIGHT (c) 2016-2017 Kuan-Hsun Chen.
- *
- * 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_RTEMS_RATEMON_H
-#define _RTEMS_RTEMS_RATEMON_H
-
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/status.h>
-#include <rtems/score/thread.h>
-#include <rtems/score/watchdog.h>
-
-struct rtems_printer;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicRateMon Rate Monotonic Scheduler
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Rate
- * Monotonic Manager.
- *
- * Statistics are kept for each period and can be obtained or printed via
- * API calls. The statistics kept include minimum, maximum and average times
- * for both cpu usage and wall time. The statistics indicate the execution
- * and wall time used by the owning thread between successive calls to
- * rtems_rate_monotonic_period.
- */
-/**@{*/
-
-/**
- * This is the public type used for the rate monotonic timing
- * statistics.
- */
-#include <rtems/score/timespec.h>
-
-typedef struct timespec rtems_rate_monotonic_period_time_t;
-
-/**
- * This is the internal type used for the rate monotonic timing
- * statistics.
- */
-#include <rtems/score/timestamp.h>
-
-/**
- * The following enumerated type defines the states in which a
- * period may be.
- */
-typedef enum {
- /**
- * This value indicates the period is off the watchdog chain,
- * and has never been initialized.
- */
- RATE_MONOTONIC_INACTIVE,
-
- /**
- * This value indicates the period is on the watchdog chain, and
- * running. The owner should be executed or blocked waiting on
- * another object.
- */
- RATE_MONOTONIC_ACTIVE,
-
- /**
- * This value indicates the period is off the watchdog chain, and
- * has expired. The owner is still executing and has taken too much
- * all time to complete this iteration of the period.
- */
- RATE_MONOTONIC_EXPIRED
-} rtems_rate_monotonic_period_states;
-
-/**
- * The following constant is the interval passed to the rate_monontonic_period
- * directive to obtain status information.
- */
-#define RTEMS_PERIOD_STATUS WATCHDOG_NO_TIMEOUT
-
-/**
- * The following defines the PUBLIC data structure that has the
- * statistics kept on each period instance.
- *
- * @note The public structure uses struct timespec while the
- * internal one uses Timestamp_Control.
- */
-typedef struct {
- /** This field contains the number of periods executed. */
- uint32_t count;
- /** This field contains the number of periods missed. */
- uint32_t missed_count;
-
- /** This field contains the least amount of CPU time used in a period. */
- rtems_thread_cpu_usage_t min_cpu_time;
- /** This field contains the highest amount of CPU time used in a period. */
- rtems_thread_cpu_usage_t max_cpu_time;
- /** This field contains the total amount of wall time used in a period. */
- rtems_thread_cpu_usage_t total_cpu_time;
-
- /** This field contains the least amount of wall time used in a period. */
- rtems_rate_monotonic_period_time_t min_wall_time;
- /** This field contains the highest amount of wall time used in a period. */
- rtems_rate_monotonic_period_time_t max_wall_time;
- /** This field contains the total amount of CPU time used in a period. */
- rtems_rate_monotonic_period_time_t total_wall_time;
-} rtems_rate_monotonic_period_statistics;
-
-/**
- * The following defines the INTERNAL data structure that has the
- * statistics kept on each period instance.
- */
-typedef struct {
- /** This field contains the number of periods executed. */
- uint32_t count;
- /** This field contains the number of periods missed. */
- uint32_t missed_count;
-
- /** This field contains the least amount of CPU time used in a period. */
- Timestamp_Control min_cpu_time;
- /** This field contains the highest amount of CPU time used in a period. */
- Timestamp_Control max_cpu_time;
- /** This field contains the total amount of wall time used in a period. */
- Timestamp_Control total_cpu_time;
-
- /** This field contains the least amount of wall time used in a period. */
- Timestamp_Control min_wall_time;
- /** This field contains the highest amount of wall time used in a period. */
- Timestamp_Control max_wall_time;
- /** This field contains the total amount of CPU time used in a period. */
- Timestamp_Control total_wall_time;
-} Rate_monotonic_Statistics;
-
-/**
- * The following defines the period status structure.
- */
-typedef struct {
- /** This is the Id of the thread using this period. */
- rtems_id owner;
-
- /** This is the current state of this period. */
- rtems_rate_monotonic_period_states state;
-
- /**
- * This is the length of wall time that has passed since this period
- * was last initiated. If the period is expired or has not been initiated,
- * then this field has no meaning.
- */
- rtems_rate_monotonic_period_time_t since_last_period;
-
- /**
- * This is the amount of CPU time that has been used since this period
- * was last initiated. If the period is expired or has not been initiated,
- * then this field has no meaning.
- */
- rtems_thread_cpu_usage_t executed_since_last_period;
-
- /** This is the count of postponed jobs of this period. */
- uint32_t postponed_jobs_count;
-} rtems_rate_monotonic_period_status;
-
-/**
- * @brief The following structure defines the control block used to manage each
- * period.
- *
- * State changes are protected by the default thread lock of the owner thread.
- * The owner thread is the thread that created the period object. The owner
- * thread field is immutable after object creation.
- */
-typedef struct {
- /** This field is the object management portion of a Period instance. */
- Objects_Control Object;
-
- /**
- * @brief Protects the rate monotonic period state.
- */
- ISR_LOCK_MEMBER( Lock )
-
- /** This is the timer used to provide the unblocking mechanism. */
- Watchdog_Control Timer;
-
- /** This field indicates the current state of the period. */
- rtems_rate_monotonic_period_states state;
-
- /**
- * @brief A priority node for use by the scheduler job release and cancel
- * operations.
- */
- Priority_Node Priority;
-
- /**
- * This field contains the length of the next period to be
- * executed.
- */
- uint32_t next_length;
-
- /**
- * This field contains a pointer to the TCB for the thread
- * which owns and uses this period instance.
- */
- Thread_Control *owner;
-
- /**
- * This field contains the cpu usage value of the owning thread when
- * the period was initiated. It is used to compute the period's
- * statistics.
- */
- Timestamp_Control cpu_usage_period_initiated;
-
- /**
- * This field contains the wall time value when the period
- * was initiated. It is used to compute the period's statistics.
- */
- Timestamp_Control time_period_initiated;
-
- /**
- * This field contains the statistics maintained for the period.
- */
- Rate_monotonic_Statistics Statistics;
-
- /**
- * This field contains the number of postponed jobs.
- * When the watchdog timeout, this variable will be increased immediately.
- */
- uint32_t postponed_jobs;
-
- /**
- * This field contains the tick of the latest deadline decided by the period
- * watchdog.
- */
- uint64_t latest_deadline;
-} Rate_monotonic_Control;
-
-/**
- * @brief Create a Period
- *
- * Rate Monotonic Manager
- *
- * This routine implements the rate_monotonic_create directive. The
- * period will have the name name. It returns the id of the
- * created period in ID.
- */
-rtems_status_code rtems_rate_monotonic_create(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Rate Monotonic Name to Id
- *
- * This routine implements the rtems_rate_monotonic_ident directive.
- * It returns the period ID associated with name. If more than one period
- * is named name, then the period to which the ID belongs is arbitrary.
- *
- * @param[in] name is the user defined period name
- * @param[in] id is the pointer to period id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the id will
- * be filled in with the region id.
- */
-rtems_status_code rtems_rate_monotonic_ident(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Rate Monotonic Cancel
- *
- * This routine implements the rtems_rate_monotonic_cancel directive. This
- * directive stops the period associated with ID from continuing to
- * run.
- *
- * @param[in] id is the rate monotonic id
- *
- * @retval RTEMS_SUCCESSFUL if successful and caller is not the owning thread
- * or error code if unsuccessful
- *
- */
-rtems_status_code rtems_rate_monotonic_cancel(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Delete Rate Monotonic
- *
- * This routine implements the rtems_rate_monotonic_delete directive. The
- * period indicated by ID is deleted.
- *
- * @param[in] id is the rate monotonic id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_rate_monotonic_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Rate Monotonic Get Status
- *
- * This routine implements the rtems_rate_monotonic_get_status directive.
- * Information about the period indicated by ID is returned.
- *
- * @param[in] id is the rate monotonic id
- * @param[in] status is the pointer to status control block
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- *
- */
-rtems_status_code rtems_rate_monotonic_get_status(
- rtems_id id,
- rtems_rate_monotonic_period_status *status
-);
-
-/**
- * @brief RTEMS Rate Monotonic Get Statistics
- *
- * This routine implements the rtems_rate_monotonic_get_statistics directive.
- * Statistics gathered from the use of this period are returned.
- *
- * @param[in] id is the rate monotonic id
- * @param[in] statistics is the pointer to statistics control block
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_rate_monotonic_get_statistics(
- rtems_id id,
- rtems_rate_monotonic_period_statistics *statistics
-);
-
-/**
- * @brief RTEMS Rate Monotonic Reset Statistics
- *
- * Rate Monotonic Manager -- Reset Statistics
- *
- * This routine allows a thread to reset the statistics information
- * on a specific period instance.
- */
-rtems_status_code rtems_rate_monotonic_reset_statistics(
- rtems_id id
-);
-
-/**
- * @brief rtems_rate_monotonic_reset_all_statistics
- *
- * This routine allows a thread to reset the statistics information
- * on ALL period instances.
- */
-void rtems_rate_monotonic_reset_all_statistics( void );
-
-/**
- * @brief RTEMS Report Rate Monotonic Statistics
- *
- * This routine allows a thread to print the statistics information
- * on ALL period instances which have non-zero counts using the RTEMS
- * printer. The implementation of this directive straddles the fence
- * between inside and outside of RTEMS. It is presented as part of
- * the Manager but actually uses other services of the Manager.
- */
-void rtems_rate_monotonic_report_statistics_with_plugin(
- const struct rtems_printer *printer
-);
-
-/**
- * @brief RTEMS Report Rate Monotonic Statistics
- *
- * This routine allows a thread to print the statistics information
- * on ALL period instances which have non-zero counts using printk.
- */
-void rtems_rate_monotonic_report_statistics( void );
-
-/**
- * @brief RTEMS Rate Monotonic Period
- *
- * This routine implements the rtems_rate_monotonic_period directive. When
- * length is non-zero, this directive initiates the period associated with
- * ID from continuing for a period of length. If length is zero, then
- * result is set to indicate the current state of the period.
- *
- * @param[in] id is the rate monotonic id
- * @param[in] length is the length of period (in ticks)
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_rate_monotonic_period(
- rtems_id id,
- rtems_interval length
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/ratemonimpl.h b/cpukit/rtems/include/rtems/rtems/ratemonimpl.h
deleted file mode 100644
index ba38a3e61a..0000000000
--- a/cpukit/rtems/include/rtems/rtems/ratemonimpl.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicRateMonImpl
- *
- * @brief Classic Rate Monotonic Scheduler Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * On-Line Applications Research Corporation (OAR).
- * Copyright (c) 2016 embedded brains GmbH.
- * COPYRIGHT (c) 2016 Kuan-Hsun Chen.
- *
- * 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_RTEMS_RATEMONIMPL_H
-#define _RTEMS_RTEMS_RATEMONIMPL_H
-
-#include <rtems/rtems/ratemon.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/schedulerimpl.h>
-#include <rtems/score/threadimpl.h>
-#include <rtems/score/watchdogimpl.h>
-
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicRateMonImpl Classic Rate Monotonic Scheduler Implementation
- *
- * @ingroup ClassicRateMon
- *
- * @{
- */
-
-#define RATE_MONOTONIC_INTEND_TO_BLOCK \
- ( THREAD_WAIT_CLASS_PERIOD | THREAD_WAIT_STATE_INTEND_TO_BLOCK )
-
-#define RATE_MONOTONIC_BLOCKED \
- ( THREAD_WAIT_CLASS_PERIOD | THREAD_WAIT_STATE_BLOCKED )
-
-#define RATE_MONOTONIC_READY_AGAIN \
- ( THREAD_WAIT_CLASS_PERIOD | THREAD_WAIT_STATE_READY_AGAIN )
-
-/**
- * @brief Rate Monotonic Period Class Management Structure
- *
- * This instance of Objects_Information is used to manage the
- * set of rate monotonic period instances.
- */
-extern Objects_Information _Rate_monotonic_Information;
-
-/**
- * @brief Allocates a period control block from
- * the inactive chain of free period control blocks.
- *
- * This function allocates a period control block from
- * the inactive chain of free period control blocks.
- */
-RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void )
-{
- return (Rate_monotonic_Control *)
- _Objects_Allocate( &_Rate_monotonic_Information );
-}
-
-RTEMS_INLINE_ROUTINE void _Rate_monotonic_Acquire_critical(
- Rate_monotonic_Control *the_period,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_Acquire( &the_period->Lock, lock_context );
-}
-
-RTEMS_INLINE_ROUTINE void _Rate_monotonic_Release(
- Rate_monotonic_Control *the_period,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_Release_and_ISR_enable( &the_period->Lock, lock_context );
-}
-
-RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get(
- Objects_Id id,
- ISR_lock_Context *lock_context
-)
-{
- return (Rate_monotonic_Control *)
- _Objects_Get( id, lock_context, &_Rate_monotonic_Information );
-}
-
-void _Rate_monotonic_Timeout( Watchdog_Control *watchdog );
-
-/**
- * @brief _Rate_monotonic_Get_status(
- *
- * This routine is invoked to compute the elapsed wall time and cpu
- * time for a period.
- *
- * @param[in] the_period points to the period being operated upon.
- * @param[out] wall_since_last_period is set to the wall time elapsed
- * since the period was initiated.
- * @param[out] cpu_since_last_period is set to the cpu time used by the
- * owning thread since the period was initiated.
- *
- * @retval This routine returns true if the status can be determined
- * and false otherwise.
- */
-bool _Rate_monotonic_Get_status(
- const Rate_monotonic_Control *the_period,
- Timestamp_Control *wall_since_last_period,
- Timestamp_Control *cpu_since_last_period
-);
-
-void _Rate_monotonic_Restart(
- Rate_monotonic_Control *the_period,
- Thread_Control *owner,
- ISR_lock_Context *lock_context
-);
-
-void _Rate_monotonic_Cancel(
- Rate_monotonic_Control *the_period,
- Thread_Control *owner,
- ISR_lock_Context *lock_context
-);
-
-RTEMS_INLINE_ROUTINE void _Rate_monotonic_Reset_min_time(
- Timestamp_Control *min_time
-)
-{
- _Timestamp_Set( min_time, 0x7fffffff, 0x7fffffff );
-}
-
-RTEMS_INLINE_ROUTINE void _Rate_monotonic_Reset_statistics(
- Rate_monotonic_Control *the_period
-)
-{
- Rate_monotonic_Statistics *statistics;
-
- statistics = &the_period->Statistics;
- memset( statistics, 0, sizeof( *statistics ) );
- _Rate_monotonic_Reset_min_time( &statistics->min_wall_time );
- _Rate_monotonic_Reset_min_time( &statistics->min_cpu_time );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/region.h b/cpukit/rtems/include/rtems/rtems/region.h
deleted file mode 100644
index 4772e2835b..0000000000
--- a/cpukit/rtems/include/rtems/rtems/region.h
+++ /dev/null
@@ -1,298 +0,0 @@
-/**
- * @file rtems/rtems/region.h
- *
- * @defgroup ClassicRegion Regions
- *
- * @ingroup ClassicRTEMS
- * @brief Region Manager
- *
- * This include file contains all the constants and structures associated
- * with the Region Manager. This manager provides facilities to dynamically
- * allocate memory in variable sized units which are returned as segments.
- *
- * Directives provided are:
- *
- * - create a region
- * - get an ID of a region
- * - delete a region
- * - get a segment from a region
- * - return a segment to a region
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_REGION_H
-#define _RTEMS_RTEMS_REGION_H
-
-#include <rtems/rtems/attr.h>
-#include <rtems/rtems/options.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/types.h>
-#include <rtems/score/heap.h>
-#include <rtems/score/threadq.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicRegion Regions
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Region
- * Manager.
- */
-/**@{*/
-
-/**
- * The following records define the control block used to manage
- * each region.
- */
-
-typedef struct {
- Objects_Control Object;
- Thread_queue_Control Wait_queue; /* waiting threads */
- const Thread_queue_Operations *wait_operations;
- uintptr_t maximum_segment_size; /* in bytes */
- rtems_attribute attribute_set;
- Heap_Control Memory;
-} Region_Control;
-
-/**
- * @brief rtems_region_create
- *
- * Region Manager
- *
- * This routine implements the rtems_region_create directive. The
- * region will have the name name. The memory area managed by
- * the region is of length bytes and starts at starting_address.
- * The memory area will be divided into as many allocatable units of
- * page_size bytes as possible. The attribute_set determines which
- * thread queue discipline is used by the region. It returns the
- * id of the created region in ID.
- */
-rtems_status_code rtems_region_create(
- rtems_name name,
- void *starting_address,
- uintptr_t length,
- uintptr_t page_size,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Extend Region
- *
- * This routine implements the rtems_region_extend directive. The
- * region will have the name name. The memory area managed by
- * the region will be attempted to be grown by length bytes using
- * the memory starting at starting_address.
- *
- * @param[in] id is the id of region to grow
- * @param[in] starting_address starting address of memory area for extension
- * @param[in] length is the physical length in bytes to grow the region
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_region_extend(
- rtems_id id,
- void *starting_address,
- uintptr_t length
-);
-
-/**
- * @brief RTEMS Region Name to Id
- *
- * This routine implements the rtems_region_ident directive.
- * This directive returns the region ID associated with name.
- * If more than one region is named name, then the region
- * to which the ID belongs is arbitrary.
- *
- * @param[in] name is the user defined region name
- * @param[in] id is the pointer to region id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the id will
- * be filled in with the region id.
- */
-rtems_status_code rtems_region_ident(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Get Region Information
- *
- * This routine implements the rtems_region_get_information directive.
- * This directive returns information about the heap associated with
- * this region.
- *
- * @param[in] id is the region id
- * @param[in] the_info is the pointer to region information block
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * *id filled with the region information block
- */
-rtems_status_code rtems_region_get_information(
- rtems_id id,
- Heap_Information_block *the_info
-);
-
-/**
- * @brief RTEMS Get Region Free Information
- *
- * This routine implements the rtems_region_get_free_information directive.
- * This directive returns information about the free blocks in the
- * heap associated with this region. Information about the used blocks
- * will be returned as zero.
- *
- * @param[in] id is the region id
- * @param[in] the_info is the pointer to region information block
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the the_info will
- * be filled in with the region information block.
- */
-rtems_status_code rtems_region_get_free_information(
- rtems_id id,
- Heap_Information_block *the_info
-);
-
-/**
- * @brief RTEMS Delete Region
- *
- * This routine implements the rtems_region_delete directive. The
- * region indicated by ID is deleted, provided that none of its segments are
- * still allocated.
- *
- * @param[in] id is the region id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_region_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Get Region Segment
- *
- * This routine implements the rtems_region_get_segment directive. It
- * attempts to allocate a segment from the region associated with @a id.
- * If a segment of the requested @a size size can be allocated, its address
- * is returned in @a segment. If no segment is available, then the task
- * may return immediately or block waiting for a segment with an optional
- * timeout of @a timeout clock ticks. Whether the task blocks or returns
- * immediately is based on the no_wait option in the @a option_set.
- *
- * @param[in] id is the region id
- * @param[in] size is the segment size in bytes
- * @param[in] option_set is the wait option
- * @param[in] timeout is the number of ticks to wait (0 means wait forever)
- * @param[in] segment is the pointer to segment address
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the segment will
- * be filled in with the segment address.
- */
-rtems_status_code rtems_region_get_segment(
- rtems_id id,
- uintptr_t size,
- rtems_option option_set,
- rtems_interval timeout,
- void **segment
-);
-
-/**
- * @brief RTEMS Get Region Segment Size
- *
- * This routine implements the rtems_region_get_segment_size directive. It
- * returns the size in bytes of the specified user memory area.
- *
- * @param[in] id is the region id
- * @param[in] segment is the segment address
- * @param[in] size is the pointer to segment size in bytes
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the size will
- * be filled in with the segment size in bytes.
- */
-rtems_status_code rtems_region_get_segment_size(
- rtems_id id,
- void *segment,
- uintptr_t *size
-);
-
-/**
- * @brief RTEMS Return Region Segment
- *
- * This routine implements the rtems_region_return_segment directive. It
- * frees the segment to the region associated with ID. The segment must
- * have been previously allocated from the same region. If freeing the
- * segment results in enough memory being available to satisfy the
- * rtems_region_get_segment of the first blocked task, then that task and as
- * many subsequent tasks as possible will be unblocked with their requests
- * satisfied.
- *
- * @param[in] id is the region id
- * @param[in] segment is the pointer to segment address
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_region_return_segment(
- rtems_id id,
- void *segment
-);
-
-/**
- * @brief Resize RTEMS Region Segment
- *
- * This routine implements the rtems_region_resize_segment directive. It
- * tries to resize segment in the region associated with 'id' to the new size
- * 'size' in place. The first 'size' or old size bytes of the segment
- * (whatever is less) are guaranteed to remain unmodified. The segment must
- * have been previously allocated from the same region. If resizing the
- * segment results in enough memory being available to satisfy the
- * rtems_region_get_segment of the first blocked task, then that task and as
- * many subsequent tasks as possible will be unblocked with their requests
- * satisfied.
- *
- * @param[in] id is the region id
- * @param[in] segment is the pointer to segment address
- * @param[in] size is the new required size
- * @retval RTEMS_SUCCESSFUL if operation successful, RTEMS_UNSATISFIED if the
- * the segment can't be resized in place or any other code at failure
- *
- * @note On RTEMS_SUCCESSFUL or RTEMS_UNSATISFIED exit it returns into the
- * 'old_size' the old size in bytes of the user memory area of the
- * specified segment.
- */
-rtems_status_code rtems_region_resize_segment(
- rtems_id id,
- void *segment,
- uintptr_t size,
- uintptr_t *old_size
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/regionimpl.h b/cpukit/rtems/include/rtems/rtems/regionimpl.h
deleted file mode 100644
index 178b7ea32b..0000000000
--- a/cpukit/rtems/include/rtems/rtems/regionimpl.h
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicRegionImpl
- *
- * @brief Classic Region Manager Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_REGIONIMPL_H
-#define _RTEMS_RTEMS_REGIONIMPL_H
-
-#include <rtems/rtems/region.h>
-#include <rtems/score/apimutex.h>
-#include <rtems/score/heapimpl.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/threadqimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicRegionImpl Classic Region Manager Implementation
- *
- * @ingroup ClassicRegion
- *
- * @{
- */
-
-#define REGION_OF_THREAD_QUEUE_QUEUE( queue ) \
- RTEMS_CONTAINER_OF( queue, Region_Control, Wait_queue.Queue )
-
-/**
- * The following defines the information control block used to
- * manage this class of objects.
- */
-extern Objects_Information _Region_Information;
-
-/**
- * @brief Region_Allocate
- *
- * This function allocates a region control block from
- * the inactive chain of free region control blocks.
- */
-RTEMS_INLINE_ROUTINE Region_Control *_Region_Allocate( void )
-{
- return (Region_Control *) _Objects_Allocate( &_Region_Information );
-}
-
-/**
- * @brief Region_Free
- *
- * This routine frees a region control block to the
- * inactive chain of free region control blocks.
- */
-RTEMS_INLINE_ROUTINE void _Region_Free (
- Region_Control *the_region
-)
-{
- _Thread_queue_Destroy( &the_region->Wait_queue );
- _Objects_Free( &_Region_Information, &the_region->Object );
-}
-
-RTEMS_INLINE_ROUTINE Region_Control *_Region_Get_and_lock( Objects_Id id )
-{
- Region_Control *the_region;
-
- _RTEMS_Lock_allocator();
-
- the_region = (Region_Control *)
- _Objects_Get_no_protection( id, &_Region_Information );
-
- if ( the_region != NULL ) {
- /* Keep allocator lock */
- return the_region;
- }
-
- _RTEMS_Unlock_allocator();
- return NULL;
-}
-
-RTEMS_INLINE_ROUTINE void _Region_Unlock( Region_Control *the_region )
-{
- (void) the_region;
- _RTEMS_Unlock_allocator();
-}
-
-/**
- * @brief Region_Allocate_segment
- *
- * This function attempts to allocate a segment from the_region.
- * If successful, it returns the address of the allocated segment.
- * Otherwise, it returns NULL.
- */
-RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment (
- Region_Control *the_region,
- uintptr_t size
-)
-{
- return _Heap_Allocate( &the_region->Memory, size );
-}
-
-/**
- * @brief Region_Free_segment
- *
- * This function frees the_segment to the_region.
- */
-RTEMS_INLINE_ROUTINE bool _Region_Free_segment (
- Region_Control *the_region,
- void *the_segment
-)
-{
- return _Heap_Free( &the_region->Memory, the_segment );
-}
-
-/**
- * @brief Process Region Queue
- *
- * This is a helper routine which is invoked any time memory is
- * freed. It looks at the set of waiting tasks and attempts to
- * satisfy all outstanding requests.
- *
- * @param[in] the_region is the the region
- */
-extern void _Region_Process_queue(Region_Control *the_region);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/sem.h b/cpukit/rtems/include/rtems/rtems/sem.h
deleted file mode 100644
index 41b0061979..0000000000
--- a/cpukit/rtems/include/rtems/rtems/sem.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicSem
- *
- * @brief Classic Semaphores API
- *
- * This include file contains all the constants and structures associated
- * with the Semaphore Manager. This manager utilizes standard Dijkstra
- * counting semaphores to provide synchronization and mutual exclusion
- * capabilities.
- *
- * Directives provided are:
- *
- * - create a semaphore
- * - get an ID of a semaphore
- * - delete a semaphore
- * - acquire a semaphore
- * - release a semaphore
- * - flush a semaphore
- * - set ceiling priority for a semaphore
- */
-
-/*
- * COPYRIGHT (c) 1989-2008, 2016.
- * 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_RTEMS_SEM_H
-#define _RTEMS_RTEMS_SEM_H
-
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/options.h>
-#include <rtems/rtems/support.h>
-#include <rtems/rtems/tasks.h>
-#include <rtems/rtems/attr.h>
-#include <rtems/score/coremutex.h>
-#include <rtems/score/object.h>
-#include <rtems/score/coresem.h>
-#include <rtems/score/mrsp.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicSem Semaphores
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API
- * Semaphore Manager.
- */
-/**@{*/
-
-/**
- * The following defines the control block used to manage each semaphore.
- */
-typedef struct {
- /** This field is the object management portion of a Semaphore instance. */
- Objects_Control Object;
-
- /**
- * This contains the memory associated with the SuperCore Semaphore or
- * Mutex instance that provides the primary functionality of each
- * Classic API Semaphore instance. The structure used is dependent
- * on the attributes specified by the user on the create directive.
- *
- * @note Only one of these has meaning in a particular Classic API
- * Semaphore instance.
- */
- union {
- /**
- * @brief The thread queue present in all other variants.
- */
- Thread_queue_Control Wait_queue;
-
- /**
- * This is the SuperCore Mutex instance associated with this Classic
- * API Semaphore instance.
- */
- CORE_ceiling_mutex_Control Mutex;
-
- /**
- * This is the SuperCore Semaphore instance associated with this Classic
- * API Semaphore instance.
- */
- CORE_semaphore_Control Semaphore;
-
-#if defined(RTEMS_SMP)
- MRSP_Control MRSP;
-#endif
- } Core_control;
-
- /**
- * @brief The semaphore variant.
- *
- * @see Semaphore_Variant.
- */
- unsigned int variant : 3;
-
- /**
- * @brief The semaphore thread queue discipline.
- *
- * @see Semaphore_Discipline.
- */
- unsigned int discipline : 1;
-
-#if defined(RTEMS_MULTIPROCESSING)
- unsigned int is_global : 1;
-#endif
-} Semaphore_Control;
-
-/**
- * @brief rtems_semaphore_create
- *
- * This routine implements the rtems_semaphore_create directive. The
- * semaphore will have the name name. The starting count for
- * the semaphore is count. The attribute_set determines if
- * the semaphore is global or local and the thread queue
- * discipline. It returns the id of the created semaphore in ID.
- */
-rtems_status_code rtems_semaphore_create(
- rtems_name name,
- uint32_t count,
- rtems_attribute attribute_set,
- rtems_task_priority priority_ceiling,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Semaphore Name to Id
- *
- * This routine implements the rtems_semaphore_ident directive.
- * This directive returns the semaphore ID associated with name.
- * If more than one semaphore is named name, then the semaphore
- * to which the ID belongs is arbitrary. node indicates the
- * extent of the search for the ID of the semaphore named name.
- * The search can be limited to a particular node or allowed to
- * encompass all nodes.
- *
- * @param[in] name is the user defined semaphore name
- * @param[in] node is(are) the node(s) to be searched
- * @param[in] id is the pointer to semaphore id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * *id filled in with the semaphore id
- */
-rtems_status_code rtems_semaphore_ident(
- rtems_name name,
- uint32_t node,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Delete Semaphore
- *
- * This routine implements the rtems_semaphore_delete directive. The
- * semaphore indicated by ID is deleted.
- *
- * @param[in] id is the semaphore id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_semaphore_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Obtain Semaphore
- *
- * This routine implements the rtems_semaphore_obtain directive. It
- * attempts to obtain a unit from the semaphore associated with ID.
- * If a unit can be allocated, the calling task will return immediately.
- * If no unit is available, then the task may return immediately or
- * block waiting for a unit with an optional timeout of timeout
- * clock ticks. Whether the task blocks or returns immediately
- * is based on the RTEMS_NO_WAIT option in the option_set.
- *
- * @param[in] id is the semaphore id
- * @param[in] option_set is the wait option
- * @param[in] timeout is the number of ticks to wait (0 means wait forever)
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_semaphore_obtain(
- rtems_id id,
- rtems_option option_set,
- rtems_interval timeout
-);
-
-/**
- * @brief RTEMS Semaphore Release
- *
- * This routine implements the rtems_semaphore_release directive. It
- * frees a unit to the semaphore associated with ID. If a task was
- * blocked waiting for a unit from this semaphore, then that task will
- * be readied and the unit given to that task. Otherwise, the unit
- * will be returned to the semaphore.
- */
-rtems_status_code rtems_semaphore_release(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Semaphore Flush
- *
- * This method is the implementation of the flush directive
- * of the Semaphore Manager.
- *
- * This directive allows a thread to flush the threads
- * pending on the semaphore.
- *
- * @param[in] id is the semaphore id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_semaphore_flush(
- rtems_id id
-);
-
-/**
- * @brief Sets the priority value with respect to the specified scheduler of a
- * semaphore.
- *
- * The special priority value @ref RTEMS_CURRENT_PRIORITY can be used to get
- * the current priority value without changing it.
- *
- * The interpretation of the priority value depends on the protocol of the
- * semaphore object.
- *
- * - The Multiprocessor Resource Sharing Protocol needs a ceiling priority per
- * scheduler instance. This operation can be used to specify these priority
- * values.
- * - For the Priority Ceiling Protocol the ceiling priority is used with this
- * operation.
- * - For other protocols this operation is not defined.
- *
- * @param[in] semaphore_id Identifier of the semaphore.
- * @param[in] scheduler_id Identifier of the scheduler.
- * @param[in] new_priority The new priority value. Use
- * @ref RTEMS_CURRENT_PRIORITY to not set a new priority and only get the
- * current priority.
- * @param[out] old_priority Reference to store the old priority value.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ID Invalid semaphore or scheduler identifier.
- * @retval RTEMS_INVALID_ADDRESS The old priority reference is @c NULL.
- * @retval RTEMS_INVALID_PRIORITY The new priority value is invalid.
- * @retval RTEMS_NOT_DEFINED The set priority operation is not defined for the
- * protocol of this semaphore object.
- * @retval RTEMS_ILLEGAL_ON_REMOTE_OBJECT Not supported for remote semaphores.
- *
- * @see rtems_scheduler_ident() and rtems_task_set_priority().
- */
-rtems_status_code rtems_semaphore_set_priority(
- rtems_id semaphore_id,
- rtems_id scheduler_id,
- rtems_task_priority new_priority,
- rtems_task_priority *old_priority
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/semimpl.h b/cpukit/rtems/include/rtems/rtems/semimpl.h
deleted file mode 100644
index 6d0f156e5c..0000000000
--- a/cpukit/rtems/include/rtems/rtems/semimpl.h
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicSem
- *
- * @brief Classic Semaphores Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_SEMIMPL_H
-#define _RTEMS_RTEMS_SEMIMPL_H
-
-#include <rtems/rtems/sem.h>
-#include <rtems/score/coremuteximpl.h>
-#include <rtems/score/coresemimpl.h>
-#include <rtems/score/mrspimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @brief Classic semaphore variants.
- *
- * Must be in synchronization with Semaphore_Control::variant.
- */
-typedef enum {
- SEMAPHORE_VARIANT_MUTEX_INHERIT_PRIORITY,
- SEMAPHORE_VARIANT_MUTEX_PRIORITY_CEILING,
- SEMAPHORE_VARIANT_MUTEX_NO_PROTOCOL,
- SEMAPHORE_VARIANT_SIMPLE_BINARY,
- SEMAPHORE_VARIANT_COUNTING
-#if defined(RTEMS_SMP)
- ,
- SEMAPHORE_VARIANT_MRSP
-#endif
-} Semaphore_Variant;
-
-typedef enum {
- SEMAPHORE_DISCIPLINE_PRIORITY,
- SEMAPHORE_DISCIPLINE_FIFO
-} Semaphore_Discipline;
-
-/**
- * The following defines the information control block used to manage
- * this class of objects.
- */
-extern Objects_Information _Semaphore_Information;
-
-RTEMS_INLINE_ROUTINE const Thread_queue_Operations *_Semaphore_Get_operations(
- const Semaphore_Control *the_semaphore
-)
-{
- if ( the_semaphore->variant == SEMAPHORE_VARIANT_MUTEX_INHERIT_PRIORITY ) {
- return &_Thread_queue_Operations_priority_inherit;
- }
-
- if ( the_semaphore->discipline == SEMAPHORE_DISCIPLINE_PRIORITY ) {
- return &_Thread_queue_Operations_priority;
- }
-
- return &_Thread_queue_Operations_FIFO;
-}
-
-/**
- * @brief Allocates a semaphore control block from
- * the inactive chain of free semaphore control blocks.
- *
- * This function allocates a semaphore control block from
- * the inactive chain of free semaphore control blocks.
- */
-RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void )
-{
- return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information );
-}
-
-/**
- * @brief Frees a semaphore control block to the
- * inactive chain of free semaphore control blocks.
- *
- * This routine frees a semaphore control block to the
- * inactive chain of free semaphore control blocks.
- */
-RTEMS_INLINE_ROUTINE void _Semaphore_Free (
- Semaphore_Control *the_semaphore
-)
-{
- _Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
-}
-
-RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get(
- Objects_Id id,
- Thread_queue_Context *queue_context
-)
-{
- _Thread_queue_Context_initialize( queue_context );
- return (Semaphore_Control *) _Objects_Get(
- id,
- &queue_context->Lock_context.Lock_context,
- &_Semaphore_Information
- );
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#ifdef RTEMS_MULTIPROCESSING
-#include <rtems/rtems/semmp.h>
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/semmp.h b/cpukit/rtems/include/rtems/rtems/semmp.h
deleted file mode 100644
index 9d7669f43e..0000000000
--- a/cpukit/rtems/include/rtems/rtems/semmp.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/**
- * @file rtems/rtems/semmp.h
- *
- * @defgroup ClassicSEM Semaphore MP Support
- *
- * @ingroup ClassicRTEMS
- * @brief Semaphore Manager MP Support
- *
- * This include file contains all the constants and structures associated
- * with the Multiprocessing Support in the Semaphore Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_SEMMP_H
-#define _RTEMS_RTEMS_SEMMP_H
-
-#ifndef _RTEMS_RTEMS_SEMIMPL_H
-# error "Never use <rtems/rtems/semmp.h> directly; include <rtems/rtems/semimpl.h> instead."
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicSEM Semaphore MP Support
- *
- * @ingroup ClassicMP
- *
- * This encapsulates functionality related to the transparent multiprocessing
- * support within the Classic API Semaphore Manager.
- */
-/**@{*/
-
-/**
- * The following enumerated type defines the list of
- * remote semaphore operations.
- */
-typedef enum {
- SEMAPHORE_MP_ANNOUNCE_CREATE = 0,
- SEMAPHORE_MP_ANNOUNCE_DELETE = 1,
- SEMAPHORE_MP_EXTRACT_PROXY = 2,
- SEMAPHORE_MP_OBTAIN_REQUEST = 3,
- SEMAPHORE_MP_OBTAIN_RESPONSE = 4,
- SEMAPHORE_MP_RELEASE_REQUEST = 5,
- SEMAPHORE_MP_RELEASE_RESPONSE = 6
-} Semaphore_MP_Remote_operations;
-
-/**
- * The following data structure defines the packet used to perform
- * remote semaphore operations.
- */
-typedef struct {
- rtems_packet_prefix Prefix;
- Semaphore_MP_Remote_operations operation;
- rtems_name name;
- rtems_option option_set;
- Objects_Id proxy_id;
-} Semaphore_MP_Packet;
-
-RTEMS_INLINE_ROUTINE bool _Semaphore_MP_Is_remote( Objects_Id id )
-{
- return _Objects_MP_Is_remote( id, &_Semaphore_Information );
-}
-
-/**
- * @brief Semaphore MP Send Process Packet
- *
- * This routine performs a remote procedure call so that a
- * process operation can be performed on another node.
- */
-void _Semaphore_MP_Send_process_packet (
- Semaphore_MP_Remote_operations operation,
- Objects_Id semaphore_id,
- rtems_name name,
- Objects_Id proxy_id
-);
-
-/**
- * @brief Issues a remote rtems_semaphore_obtain() request.
- */
-rtems_status_code _Semaphore_MP_Obtain(
- rtems_id id,
- rtems_option option_set,
- rtems_interval timeout
-);
-
-/**
- * @brief Issues a remote rtems_semaphore_release() request.
- */
-rtems_status_code _Semaphore_MP_Release( rtems_id id );
-
-/**
- * @brief Semaphore MP Process Packet
- *
- * This routine performs the actions specific to this package for
- * the request from another node.
- */
-void _Semaphore_MP_Process_packet (
- rtems_packet_prefix *the_packet_prefix
-);
-
-/**
- * @brief Semaphore MP Send Object was Deleted
- *
- * This routine is invoked indirectly by the thread queue
- * when a proxy has been removed from the thread queue and
- * the remote node must be informed of this.
- */
-void _Semaphore_MP_Send_object_was_deleted (
- Thread_Control *the_proxy,
- Objects_Id mp_id
-);
-
-/**
- * @brief Semaphore MP Send Extract Proxy
- *
- * This routine is invoked when a task is deleted and it
- * has a proxy which must be removed from a thread queue and
- * the remote node must be informed of this.
- */
-void _Semaphore_MP_Send_extract_proxy (
- Thread_Control *the_thread,
- Objects_Id id
-);
-
-/**
- * @brief Semaphore Core Mutex MP Support
- *
- * This function processes the global actions necessary for remote
- * accesses to a global semaphore based on a core mutex. This function
- * is called by the core.
- *
- * @param[in] the_thread the remote thread the semaphore was surrendered to
- * @param[in] id is the id of the surrendered semaphore
- */
-void _Semaphore_Core_mutex_mp_support (
- Thread_Control *the_thread,
- Objects_Id id
-);
-
-/**
- * @brief Semaphore Core MP Support
- *
- * This function processes the global actions necessary for remote
- * accesses to a global semaphore based on a core semaphore. This function
- * is called by the core.
- *
- * @param[in] the_thread the remote thread the semaphore was surrendered to
- * @param[in] id is the id of the surrendered semaphore
- */
-void _Semaphore_Core_semaphore_mp_support (
- Thread_Control *the_thread,
- Objects_Id id
-);
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of file */
diff --git a/cpukit/rtems/include/rtems/rtems/signal.h b/cpukit/rtems/include/rtems/rtems/signal.h
deleted file mode 100644
index f7b7000d9a..0000000000
--- a/cpukit/rtems/include/rtems/rtems/signal.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicSignal
- *
- * @brief Signals API
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_SIGNAL_H
-#define _RTEMS_RTEMS_SIGNAL_H
-
-#include <rtems/rtems/asr.h>
-#include <rtems/rtems/modes.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicSignal Signals
- *
- * @ingroup ClassicRTEMS
- *
- * Directives provided are:
- *
- * + establish an asynchronous signal routine
- * + send a signal set to a task
- */
-/**@{*/
-
-/**
- * @brief RTEMS Catch Signal
- *
- * This routine implements the rtems_signal_catch directive. This directive
- * is used to establish asr_handler as the Asynchronous Signal Routine
- * (RTEMS_ASR) for the calling task. The asr_handler will execute with a
- * mode of mode_set.
- *
- * @param[in] asr_handler is the address of asynchronous signal routine (asr)
- * ( NULL indicates asr is invalid )
- * @param[in] mode_set is the mode value for asr
- *
- * @retval RTEMS_SUCCESSFUL
- */
-rtems_status_code rtems_signal_catch(
- rtems_asr_entry asr_handler,
- rtems_mode mode_set
-);
-
-/**
- * @brief RTEMS Send Signal
- *
- * This routine implements the rtems_signal_send directive. This directive
- * sends the signal_set to the task specified by ID.
- *
- * @param[in] id is the thread thread id
- * @param[in] signal_set is the signal set
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_signal_send(
- rtems_id id,
- rtems_signal_set signal_set
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/signalimpl.h b/cpukit/rtems/include/rtems/rtems/signalimpl.h
deleted file mode 100644
index 61848ae95c..0000000000
--- a/cpukit/rtems/include/rtems/rtems/signalimpl.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicSignalImpl
- *
- * @brief Signals Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_SIGNALIMPL_H
-#define _RTEMS_RTEMS_SIGNALIMPL_H
-
-#include <rtems/rtems/signal.h>
-#include <rtems/score/thread.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicSignalImpl Signals Implementation
- *
- * @ingroup ClassicSignal
- */
-/**@{*/
-
-void _Signal_Action_handler(
- Thread_Control *executing,
- Thread_Action *action,
- ISR_lock_Context *lock_context
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/rtems/signalmp.h>
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/signalmp.h b/cpukit/rtems/include/rtems/rtems/signalmp.h
deleted file mode 100644
index 57b8682c58..0000000000
--- a/cpukit/rtems/include/rtems/rtems/signalmp.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * @file rtems/rtems/signalmp.h
- *
- * @brief Signal MP Support
- *
- * This include file contains all the constants and structures associated
- * with the Multiprocessing Support in the Signal Manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_SIGNALMP_H
-#define _RTEMS_RTEMS_SIGNALMP_H
-
-#ifndef _RTEMS_RTEMS_SIGNALIMPL_H
-# error "Never use <rtems/rtems/signalmp.h> directly; include <rtems/rtems/signalimpl.h> instead."
-#endif
-
-#include <rtems/score/mpciimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicSignalMP Signal MP Support
- *
- * @ingroup ClassicMP
- *
- * This encapsulates functionality related to the transparent multiprocessing
- * support within the Classic API Signal Manager.
- */
-/*{*/
-
-/*
- * @brief Signal_MP_Send_process_packet
- *
- * This routine performs a remote procedure call so that a
- * process operation can be performed on another node.
- *
- * This routine is not needed since there are no process
- * packets to be sent by this manager.
- */
-
-/**
- * @brief Issues a remote rtems_signal_send() request.
- */
-rtems_status_code _Signal_MP_Send(
- rtems_id id,
- rtems_signal_set signal_set
-);
-
-/**
- * @brief Signal MP Process Packet
- *
- * This routine performs the actions specific to this package for
- * the request from another node.
- */
-void _Signal_MP_Process_packet (
- rtems_packet_prefix *the_packet_prefix
-);
-
-/*
- * @brief Signal_MP_Send_object_was_deleted
- *
- * This routine is invoked indirectly by the thread queue
- * when a proxy has been removed from the thread queue and
- * the remote node must be informed of this.
- *
- * This routine is not needed since there are no objects
- * deleted by this manager.
- */
-
-/*
- * @brief Signal_MP_Send_extract_proxy
- *
- * This routine is invoked when a task is deleted and it
- * has a proxy which must be removed from a thread queue and
- * the remote node must be informed of this.
- *
- * This routine is not needed since there are no objects
- * deleted by this manager.
- */
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of file */
diff --git a/cpukit/rtems/include/rtems/rtems/smp.h b/cpukit/rtems/include/rtems/rtems/smp.h
deleted file mode 100644
index aeb0df6f46..0000000000
--- a/cpukit/rtems/include/rtems/rtems/smp.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicSMP
- *
- * @brief SMP Services API
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * 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_RTEMS_SMP_H
-#define _RTEMS_RTEMS_SMP_H
-
-#include <stdint.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicSMP SMP Services
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality which is useful for SMP applications.
- *
- * @{
- */
-
-/**
- * @brief Returns the count of processors in the system.
- *
- * On uni-processor configurations a value of one will be returned.
- *
- * On SMP configurations this returns the value of a global variable set during
- * system initialization to indicate the count of utilized processors. The
- * processor count depends on the physically or virtually available processors
- * and application configuration. The value will always be less than or equal
- * to the maximum count of application configured processors.
- *
- * @return The count of processors being utilized.
- */
-uint32_t rtems_get_processor_count(void);
-
-/**
- * @brief Returns the index of the current processor.
- *
- * On uni-processor configurations a value of zero will be returned.
- *
- * On SMP configurations an architecture specific method is used to obtain the
- * index of the current processor in the system. The set of processor indices
- * is the range of integers starting with zero up to the processor count minus
- * one.
- *
- * Outside of sections with disabled thread dispatching the current processor
- * index may change after every instruction since the thread may migrate from
- * one processor to another. Sections with disabled interrupts are sections
- * with thread dispatching disabled.
- *
- * @return The index of the current processor.
- */
-uint32_t rtems_get_current_processor(void);
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/status.h b/cpukit/rtems/include/rtems/rtems/status.h
deleted file mode 100644
index c54404ba14..0000000000
--- a/cpukit/rtems/include/rtems/rtems/status.h
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * @file rtems/rtems/status.h
- *
- * @defgroup ClassicStatus Status Codes
- *
- * @ingroup ClassicRTEMS
- * @brief Status Codes Returned from Executive Directives
- *
- * This include file contains the status codes returned from the
- * executive directives.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_STATUS_H
-#define _RTEMS_RTEMS_STATUS_H
-
-#include <rtems/score/basedefs.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicStatus Status Codes
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the status codes returned
- * by Classic API directives.
- */
-/**@{*/
-
-/**
- * @brief Classic API Status
- *
- * This enumerates the possible status values returned b
- * Classic API directives.
- */
-typedef enum {
- /**
- * This is the status to indicate successful completion.
- */
- RTEMS_SUCCESSFUL = 0,
- /**
- * This is the status to indicate that a thread exited.
- */
- RTEMS_TASK_EXITTED = 1,
- /**
- * This is the status to indicate multiprocessing is not configured.
- */
- RTEMS_MP_NOT_CONFIGURED = 2,
- /**
- * This is the status to indicate that the object name was invalid.
- */
- RTEMS_INVALID_NAME = 3,
- /**
- * This is the status to indicate that the object Id was invalid.
- */
- RTEMS_INVALID_ID = 4,
- /**
- * This is the status to indicate you have attempted to create too many
- * instances of a particular object class.
- */
- RTEMS_TOO_MANY = 5,
- /**
- * This is the status to indicate that a blocking directive timed out.
- */
- RTEMS_TIMEOUT = 6,
- /**
- * This is the status to indicate the the object was deleted
- * while the task was blocked waiting.
- */
- RTEMS_OBJECT_WAS_DELETED = 7,
- /**
- * This is the status to indicate that the specified size was invalid.
- */
- RTEMS_INVALID_SIZE = 8,
- /**
- * This is the status to indicate that the specified address is invalid.
- */
- RTEMS_INVALID_ADDRESS = 9,
- /**
- * This is the status to indicate that the specified number was invalid.
- */
- RTEMS_INVALID_NUMBER = 10,
- /**
- * This is the status to indicate that the item has not been initialized.
- */
- RTEMS_NOT_DEFINED = 11,
- /**
- * This is the status to indicate that the object still has
- * resources in use.
- */
- RTEMS_RESOURCE_IN_USE = 12,
- /**
- * This is the status to indicate that the request was not satisfied.
- */
- RTEMS_UNSATISFIED = 13,
- /**
- * This is the status to indicate that a thread is in wrong state
- * was in the wrong execution state for the requested operation.
- */
- RTEMS_INCORRECT_STATE = 14,
- /**
- * This is the status to indicate thread was already suspended.
- */
- RTEMS_ALREADY_SUSPENDED = 15,
- /**
- * This is the status to indicate that the operation is illegal
- * on calling thread.
- */
- RTEMS_ILLEGAL_ON_SELF = 16,
- /**
- * This is the status to indicate illegal for remote object.
- */
- RTEMS_ILLEGAL_ON_REMOTE_OBJECT = 17,
- /**
- * This is the status to indicate that the operation should not be
- * called from from this excecution environment.
- */
- RTEMS_CALLED_FROM_ISR = 18,
- /**
- * This is the status to indicate that an invalid thread priority
- * was provided.
- */
- RTEMS_INVALID_PRIORITY = 19,
- /**
- * This is the status to indicate that the specified date/time was invalid.
- */
- RTEMS_INVALID_CLOCK = 20,
- /**
- * This is the status to indicate that the specified node Id was invalid.
- */
- RTEMS_INVALID_NODE = 21,
- /**
- * This is the status to indicate that the directive was not configured.
- */
- RTEMS_NOT_CONFIGURED = 22,
- /**
- * This is the status to indicate that the caller is not the
- * owner of the resource.
- */
- RTEMS_NOT_OWNER_OF_RESOURCE = 23,
- /**
- * This is the status to indicate the the directive or requested
- * portion of the directive is not implemented. This is a hint
- * that you have stumbled across an opportunity to submit code
- * to the RTEMS Project.
- */
- RTEMS_NOT_IMPLEMENTED = 24,
- /**
- * This is the status to indicate that an internal RTEMS inconsistency
- * was detected.
- */
- RTEMS_INTERNAL_ERROR = 25,
- /**
- * This is the status to indicate that the directive attempted to allocate
- * memory but was unable to do so.
- */
- RTEMS_NO_MEMORY = 26,
- /**
- * This is the status to indicate an driver IO error.
- */
- RTEMS_IO_ERROR = 27,
- /**
- * This is the status is used internally to RTEMS when performing
- * operations on behalf of remote tasks. This is referred to as
- * proxying operations and this status indicates that the operation
- * could not be completed immediately and the "proxy is blocking."
- *
- * @note This status will @b NOT be returned to the user.
- */
- RTEMS_PROXY_BLOCKING = 28
-} rtems_status_code;
-
-/**
- * This is the lowest valid value for a Classic API status code.
- */
-#define RTEMS_STATUS_CODES_FIRST RTEMS_SUCCESSFUL
-
-/**
- * This is the highest valid value for a Classic API status code.
- */
-#define RTEMS_STATUS_CODES_LAST RTEMS_PROXY_BLOCKING
-
-/**
- * @brief Checks if the status code is equal to RTEMS_SUCCESSFUL.
- *
- * This function returns TRUE if the status code is equal to RTEMS_SUCCESSFUL,
- * and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool rtems_is_status_successful(
- rtems_status_code code
-)
-{
- return (code == RTEMS_SUCCESSFUL);
-}
-
-/**
- * @brief Checks if the status code1 is equal to code2.
- *
- * This function returns TRUE if the status code1 is equal to code2,
- * and FALSE otherwise.
- */
-RTEMS_INLINE_ROUTINE bool rtems_are_statuses_equal(
- rtems_status_code code1,
- rtems_status_code code2
-)
-{
- return (code1 == code2);
-}
-
-/**
- * @brief RTEMS Status Code to Errno Mapping Function
- *
- * This function recieves an RTEMS status code and returns an
- * errno error code. The retval values show the mappings between
- * rtems_status_codes and errno error codes.
- *
- * @retval 0 RTEMS_SUCCESSFUL
- * @retval EIO RTEMS_TASK_EXITED, RTEMS_MP_NOT_CONFIGURED, RTEMS_INVALID_ID,
- * RTEMS_TOO_MANY, RTEMS_OBJECT_WAS_DELETED, RTEMS_INVALID_SIZE,
- * RTEMS_INVALID_ADDRESS, RTEMS_NOT_DEFINED, RTEMS_INCORRECT_STATE,
- * RTEMS_ILLEGAL_ON_SELF, RTEMS_ILLEGAL_ON_REMOTE_OBJECT,
- * RTEMS_CALLED_FROM_ISR, RTEMS_INVALID_PRIORITY, RTEMS_INTERNAL_ERROR,
- * RTEMS_IO_ERROR, RTEMS_PROXY_BLOCKING
- * @retval EINVAL RTEMS_INVALID_NAME, RTEMS_INVALID_CLOCK, RTEMS_INVALID_NODE
- * @retval ETIMEDOUT RTEMS_TIMEOUT
- * @retval EBADF RTEMS_INVALID_NUMBER
- * @retval EBUSY RTEMS_RESOURCE_IN_USE
- * @retval ENODEV RTEMS_UNSATISFIED
- * @retval ENOSYS RTEMS_NOT_IMPLEMENTED, RTEMS_NOT_CONFIGURED
- * @retval ENOMEM RTEMS_NO_MEMORY
- */
-int rtems_status_code_to_errno(rtems_status_code sc);
-
-/**
- * @brief Returns a text for a status code.
- *
- * The text for each status code is the enumerator constant.
- *
- * @param[in] code The status code.
- *
- * @retval text The status code text.
- * @retval "?" The passed status code is invalid.
- */
-const char *rtems_status_text( rtems_status_code code );
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/statusimpl.h b/cpukit/rtems/include/rtems/rtems/statusimpl.h
deleted file mode 100644
index 8a51bb8b19..0000000000
--- a/cpukit/rtems/include/rtems/rtems/statusimpl.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicStatusImpl
- *
- * @brief Classic Status Implementation
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_STATUSIMPL_H
-#define _RTEMS_RTEMS_STATUSIMPL_H
-
-#include <rtems/rtems/status.h>
-#include <rtems/score/threadimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicStatusImpl Classic Status Implementation
- *
- * @ingroup ClassicStatus
- *
- * @{
- */
-
-/**
- * @brief Status Object Name Errors to Status Array
- *
- * This array is used to map SuperCore Object Handler return
- * codes to Classic API status codes.
- */
-extern const rtems_status_code _Status_Object_name_errors_to_status[];
-
-RTEMS_INLINE_ROUTINE rtems_status_code _Status_Get(
- Status_Control status
-)
-{
- return (rtems_status_code) STATUS_GET_CLASSIC( status );
-}
-
-RTEMS_INLINE_ROUTINE rtems_status_code _Status_Get_after_wait(
- const Thread_Control *executing
-)
-{
- return _Status_Get( _Thread_Wait_get_status( executing ) );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/support.h b/cpukit/rtems/include/rtems/rtems/support.h
deleted file mode 100644
index 4ebb50cbdf..0000000000
--- a/cpukit/rtems/include/rtems/rtems/support.h
+++ /dev/null
@@ -1,170 +0,0 @@
-/**
- * @file
- *
- * @defgroup ClassicRTEMSWorkspace Workspace
- *
- * @ingroup ClassicRTEMS
- * @brief Classic API support.
- */
-
-/* COPYRIGHT (c) 1989-2008.
- * 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_RTEMS_SUPPORT_H
-#define _RTEMS_RTEMS_SUPPORT_H
-
-#include <rtems/rtems/types.h>
-#include <rtems/config.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup ClassicRTEMS
- */
-/**@{**/
-
-/**
- * @brief Returns the number of micro seconds for the milli seconds value @a _ms.
- */
-#define RTEMS_MILLISECONDS_TO_MICROSECONDS(_ms) ((_ms) * 1000UL)
-
-/**
- * @brief Returns the number of ticks for the milli seconds value @a _ms.
- */
-#define RTEMS_MILLISECONDS_TO_TICKS(_ms) \
- (RTEMS_MILLISECONDS_TO_MICROSECONDS(_ms) / \
- rtems_configuration_get_microseconds_per_tick())
-
-/**
- * @brief Returns the number of ticks for the micro seconds value @a _us.
- */
-#define RTEMS_MICROSECONDS_TO_TICKS(_us) \
- ((_us) / rtems_configuration_get_microseconds_per_tick())
-
-/**
- * @brief Returns @c true if the name is valid, and @c false otherwise.
- */
-RTEMS_INLINE_ROUTINE bool rtems_is_name_valid (
- rtems_name name
-)
-{
- return ( name != 0 );
-}
-
-/**
- * @brief Breaks the object name into the four component characters @a c1,
- * @a c2, @a c3, and @a c4.
- */
-RTEMS_INLINE_ROUTINE void rtems_name_to_characters(
- rtems_name name,
- char *c1,
- char *c2,
- char *c3,
- char *c4
-)
-{
- *c1 = (char) ((name >> 24) & 0xff);
- *c2 = (char) ((name >> 16) & 0xff);
- *c3 = (char) ((name >> 8) & 0xff);
- *c4 = (char) ( name & 0xff);
-}
-
-/** @} */
-
-/**
- * @defgroup ClassicRTEMSWorkspace Workspace
- *
- * @ingroup ClassicRTEMS
- *
- * Workspace definitions.
- */
-/**@{**/
-
-/**
- * @brief Gets Workspace Information
- *
- * Returns information about the heap that is used as the RTEMS Executive
- * Workspace in @a the_info.
- *
- * Returns @c true if successful, and @a false otherwise.
- */
-bool rtems_workspace_get_information(
- Heap_Information_block *the_info
-);
-
-/**
- * @brief Allocates Memory from the Workspace
- *
- * A number of @a bytes bytes will be allocated from the RTEMS Executive
- * Workspace and returned in @a pointer.
- *
- * Returns @c true if successful, and @a false otherwise.
- */
-bool rtems_workspace_allocate(
- size_t bytes,
- void **pointer
-);
-
-/**
- * @brief Frees Memory Allocated from the Workspace
- *
- * This frees the memory indicated by @a pointer that was allocated from the
- * RTEMS Executive Workspace.
- *
- * Returns @c true if successful, and @a false otherwise.
- */
-bool rtems_workspace_free(
- void *pointer
-);
-
-/**
- * @brief Greedy allocate that empties the workspace.
- *
- * Afterwards the heap has at most @a block_count allocatable blocks of sizes
- * specified by @a block_sizes. The @a block_sizes must point to an array with
- * @a block_count members. All other blocks are used.
- *
- * @see rtems_workspace_greedy_free().
- */
-void *rtems_workspace_greedy_allocate(
- const uintptr_t *block_sizes,
- size_t block_count
-);
-
-/**
- * @brief Greedy allocate all blocks except the largest free block.
- *
- * Afterwards the heap has at most one allocatable block. This block is the
- * largest free block if it exists. The allocatable size of this block is
- * stored in @a allocatable_size. All other blocks are used.
- *
- * @see rtems_workspace_greedy_free().
- */
-void *rtems_workspace_greedy_allocate_all_except_largest(
- uintptr_t *allocatable_size
-);
-
-/**
- * @brief Frees space of a greedy allocation.
- *
- * The @a opaque argument must be the return value of
- * rtems_workspace_greedy_allocate() or
- * rtems_workspace_greedy_allocate_all_except_largest().
- */
-void rtems_workspace_greedy_free( void *opaque );
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/taskmp.h b/cpukit/rtems/include/rtems/rtems/taskmp.h
deleted file mode 100644
index e2d70a924e..0000000000
--- a/cpukit/rtems/include/rtems/rtems/taskmp.h
+++ /dev/null
@@ -1,132 +0,0 @@
-/**
- * @file rtems/rtems/taskmp.h
- *
- * @defgroup ClassicTaskMP Task MP Support
- *
- * @ingroup ClassicRTEMS
- * @brief Task Manager MP Support
- *
- * This include file contains all the constants and structures associated
- * with the multiprocessing support in the task manager.
- */
-
-/* COPYRIGHT (c) 1989-2013.
- * 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_RTEMS_TASKMP_H
-#define _RTEMS_RTEMS_TASKMP_H
-
-#ifndef _RTEMS_RTEMS_TASKSIMPL_H
-# error "Never use <rtems/rtems/taskmp.h> directly; include <rtems/rtems/tasksimpl.h> instead."
-#endif
-
-#include <rtems/score/mpciimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicTaskMP Task MP Support
- *
- * @ingroup ClassicMP
- *
- * This encapsulates functionality related to the transparent multiprocessing
- * support within the Classic API Task Manager.
- */
-/**@{*/
-
-/**
- * The following enumerated type defines the list of
- * remote task operations.
- */
-typedef enum {
- RTEMS_TASKS_MP_ANNOUNCE_CREATE = 0,
- RTEMS_TASKS_MP_ANNOUNCE_DELETE = 1,
- RTEMS_TASKS_MP_SUSPEND_REQUEST = 2,
- RTEMS_TASKS_MP_SUSPEND_RESPONSE = 3,
- RTEMS_TASKS_MP_RESUME_REQUEST = 4,
- RTEMS_TASKS_MP_RESUME_RESPONSE = 5,
- RTEMS_TASKS_MP_SET_PRIORITY_REQUEST = 6,
- RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE = 7,
-} RTEMS_tasks_MP_Remote_operations;
-
-/**
- * @brief RTEMS Tasks MP Send Process Packet
- *
- * Multiprocessing Support for the RTEMS Task Manager
- *
- * This routine performs a remote procedure call so that a
- * process operation can be performed on another node.
- */
-void _RTEMS_tasks_MP_Send_process_packet (
- RTEMS_tasks_MP_Remote_operations operation,
- Objects_Id task_id,
- rtems_name name
-);
-
-/**
- * @brief Issues a remote rtems_task_set_priority() request.
- */
-rtems_status_code _RTEMS_tasks_MP_Set_priority(
- rtems_id id,
- rtems_task_priority new_priority,
- rtems_task_priority *old_priority
-);
-
-/**
- * @brief Issues a remote rtems_task_suspend() request.
- */
-rtems_status_code _RTEMS_tasks_MP_Suspend( rtems_id id );
-
-/**
- * @brief Issues a remote rtems_task_resume() request.
- */
-rtems_status_code _RTEMS_tasks_MP_Resume( rtems_id id );
-
-/**
- * @brief _RTEMS_tasks_MP_Process_packet
- *
- * This routine performs the actions specific to this package for
- * the request from another node.
- */
-void _RTEMS_tasks_MP_Process_packet (
- rtems_packet_prefix *the_packet_prefix
-);
-
-/**
- * @brief _RTEMS_tasks_MP_Send_object_was_deleted
- *
- * This routine is invoked indirectly by the thread queue
- * when a proxy has been removed from the thread queue and
- * the remote node must be informed of this.
- *
- * This routine is not needed by RTEMS_tasks since a task
- * cannot be deleted when segments are in use.
- */
-
-/*
- * _RTEMS_tasks_MP_Send_extract_proxy
- *
- * This routine is invoked when a task is deleted and it
- * has a proxy which must be removed from a thread queue and
- * the remote node must be informed of this.
- *
- * This routine is not needed since there are no objects
- * deleted by this manager.
- *
- */
-
-#ifdef __cplusplus
-}
-#endif
-
-/**@}*/
-
-#endif
-/* end of file */
diff --git a/cpukit/rtems/include/rtems/rtems/tasks.h b/cpukit/rtems/include/rtems/rtems/tasks.h
deleted file mode 100644
index 585f4c449c..0000000000
--- a/cpukit/rtems/include/rtems/rtems/tasks.h
+++ /dev/null
@@ -1,716 +0,0 @@
-/**
- * @file rtems/rtems/tasks.h
- *
- * @defgroup ClassicTasks Tasks
- *
- * @ingroup ClassicRTEMS
- * @brief RTEMS Tasks
- *
- * This include file contains all constants and structures associated
- * with RTEMS tasks. This manager provides a comprehensive set of directives
- * to create, delete, and administer tasks.
- *
- * Directives provided are:
- *
- * - create a task
- * - get an ID of a task
- * - start a task
- * - restart a task
- * - delete a task
- * - suspend a task
- * - resume a task
- * - set a task's priority
- * - change the current task's mode
- * - wake up after interval
- * - wake up when specified
- */
-
-/*
- * COPYRIGHT (c) 1989-2014.
- * 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_RTEMS_TASKS_H
-#define _RTEMS_RTEMS_TASKS_H
-
-#include <rtems/score/object.h>
-#include <rtems/score/scheduler.h>
-#include <rtems/score/thread.h>
-#include <rtems/rtems/types.h>
-#include <rtems/rtems/event.h>
-#include <rtems/rtems/asr.h>
-#include <rtems/rtems/attr.h>
-#include <rtems/rtems/status.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicTasks Tasks
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates the functionality of the Classic API Task Manager.
- * This functionality includes task services such as creation, deletion,
- * delays, suspend/resume, and manipulation of execution mode and priority.
- */
-/**@{*/
-
-/**
- * Constant to be used as the ID of current task
- */
-#define RTEMS_SELF OBJECTS_ID_OF_SELF
-
-/**
- * This constant is passed to the rtems_task_wake_after directive as the
- * interval when a task wishes to yield the CPU.
- */
-#define RTEMS_YIELD_PROCESSOR WATCHDOG_NO_TIMEOUT
-
-/**
- * Define the type for an RTEMS API task priority.
- */
-typedef uint32_t rtems_task_priority;
-
-/**
- * This is the constant used with the rtems_task_set_priority
- * directive to indicate that the caller wants to obtain its
- * current priority rather than set it as the name of the
- * directive indicates.
- */
-#define RTEMS_NO_PRIORITY RTEMS_CURRENT_PRIORITY
-
-/**
- * This constant is the least valid value for a Classic API
- * task priority.
- */
-#define RTEMS_MINIMUM_PRIORITY (PRIORITY_MINIMUM + 1)
-
-/**
- * This constant is the maximum valid value for a Classic API
- * task priority.
- *
- * @note This is actually the priority of the IDLE thread so
- * using this priority will result in having a task
- * which never executes. This could be useful if you
- * want to ensure that a task does not executes during
- * certain operations such as a system mode change.
- */
-#define RTEMS_MAXIMUM_PRIORITY ((rtems_task_priority) PRIORITY_MAXIMUM)
-
-/**
- * The following constant is passed to rtems_task_set_priority when the
- * caller wants to obtain the current priority.
- */
-#define RTEMS_CURRENT_PRIORITY PRIORITY_MINIMUM
-
-/**
- * External API name for Thread_Control
- */
-typedef Thread_Control rtems_tcb;
-
-/**
- * The following defines the "return type" of an RTEMS task.
- */
-typedef void rtems_task;
-
-/**
- * The following defines the argument to an RTEMS task.
- */
-typedef Thread_Entry_numeric_type rtems_task_argument;
-
-/**
- * The following defines the type for the entry point of an RTEMS task.
- */
-typedef rtems_task ( *rtems_task_entry )(
- rtems_task_argument
- );
-
-/**
- * The following records define the Initialization Tasks Table.
- * Each entry contains the information required by RTEMS to
- * create and start a user task automatically at executive
- * initialization time.
- */
-typedef struct {
- /** This is the Initialization Task's name. */
- rtems_name name;
- /** This is the Initialization Task's stack size. */
- size_t stack_size;
- /** This is the Initialization Task's priority. */
- rtems_task_priority initial_priority;
- /** This is the Initialization Task's attributes. */
- rtems_attribute attribute_set;
- /** This is the Initialization Task's entry point. */
- rtems_task_entry entry_point;
- /** This is the Initialization Task's initial mode. */
- rtems_mode mode_set;
- /** This is the Initialization Task's argument. */
- rtems_task_argument argument;
-} rtems_initialization_tasks_table;
-
-/**
- * @brief RTEMS Task Create
- *
- * This routine implements the rtems_task_create directive. The task
- * will have the name name. The attribute_set can be used to indicate
- * that the task will be globally accessible or utilize floating point.
- * The task's stack will be stack_size bytes. The task will begin
- * execution with initial_priority and initial_modes. It returns the
- * id of the created task in ID.
- *
- * @param[in] name is the user defined thread name
- * @param[in] initial_priority is the thread priority
- * @param[in] stack_size is the stack size in bytes
- * @param[in] initial_modes is the initial thread mode
- * @param[in] attribute_set is the thread attributes
- * @param[in] id is the pointer to thread id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- * and *id thread id filled in
- */
-rtems_status_code rtems_task_create(
- rtems_name name,
- rtems_task_priority initial_priority,
- size_t stack_size,
- rtems_mode initial_modes,
- rtems_attribute attribute_set,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Task Name to Id
- *
- * This routine implements the rtems_task_ident directive.
- * This directive returns the task ID associated with name.
- * If more than one task is named name, then the task to
- * which the ID belongs is arbitrary. node indicates the
- * extent of the search for the ID of the task named name.
- * The search can be limited to a particular node or allowed to
- * encompass all nodes.
- *
- * @param[in] name is the user defined thread name
- * @param[in] node is(are) the node(s) to be searched
- * @param[in] id is the pointer to thread id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error. If successful, the id will
- * be filled in with the thread id.
- */
-rtems_status_code rtems_task_ident(
- rtems_name name,
- uint32_t node,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Delete Task
- *
- * This routine implements the rtems_task_delete directive. The
- * task indicated by ID is deleted. The executive halts execution
- * of the thread and frees the thread control block.
- *
- * @param[in] id is the thread id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error and id is not the requesting thread. Status code is
- * returned indicating the source of the error. Nothing
- * is returned if id is the requesting thread (always succeeds).
- */
-rtems_status_code rtems_task_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Task Mode
- *
- * This routine implements the rtems_task_mode directive. The current
- * values of the modes indicated by mask of the calling task are changed
- * to that indicated in mode_set. The former mode of the task is
- * returned in mode_set.
- *
- * @param[in] mode_set is the new mode
- * @param[in] mask is the mask
- * @param[in] previous_mode_set is the address of previous mode set
- *
- * @retval RTEMS_SUCCESSFUL and previous_mode_set filled in with the
- * previous mode set
- */
-rtems_status_code rtems_task_mode(
- rtems_mode mode_set,
- rtems_mode mask,
- rtems_mode *previous_mode_set
-);
-
-/**
- * @brief RTEMS Task Restart
- *
- * This routine implements the rtems_task_restart directive. The
- * task associated with ID is restarted at its initial entry
- * point with the new argument.
- *
- * @param[in] id is the thread id
- * @param[in] arg is the thread argument
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_task_restart(
- rtems_id id,
- uint32_t arg
-);
-
-/**
- * @brief RTEMS Suspend Task
- *
- * This routine implements the rtems_task_suspend directive. The
- * SUSPENDED state is set for task associated with ID. Note that the
- * suspended state can be in addition to other waiting states.
- *
- * @param[in] id is the thread id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_task_suspend(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Resume Task
- *
- * This routine implements the rtems_task_resume Directive. The
- * SUSPENDED state is cleared for task associated with ID.
- *
- * @param[in] id is the thread id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_task_resume(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Set Task Priority
- *
- * This routine implements the rtems_task_set_priority directive. The
- * current priority of the task associated with ID is set to
- * new_priority. The former priority of that task is returned
- * in old_priority.
- *
- * @param[in] id is the thread to extract
- * @param[in] new_priority is the thread to extract
- * @param[in] old_priority is the thread to extract
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * and *old_priority filled in with the previous previous priority
- */
-rtems_status_code rtems_task_set_priority(
- rtems_id id,
- rtems_task_priority new_priority,
- rtems_task_priority *old_priority
-);
-
-/**
- * @brief Gets the current priority of the specified task with respect to the
- * specified scheduler instance.
- *
- * The current priority reflects temporary priority adjustments due to locking
- * protocols, the rate-monotonic period objects on some schedulers and other
- * mechanisms.
- *
- * @param[in] task_id Identifier of the task. Use @ref RTEMS_SELF to select
- * the executing task.
- * @param[in] scheduler_id Identifier of the scheduler instance.
- * @param[out] priority Returns the current priority of the specified task with
- * respect to the specified scheduler instance.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_ILLEGAL_ON_REMOTE_OBJECT Directive is illegal on remote tasks.
- * @retval RTEMS_INVALID_ADDRESS The priority parameter is @c NULL.
- * @retval RTEMS_INVALID_ID Invalid task or scheduler identifier.
- * @retval RTEMS_NOT_DEFINED The task has no priority within the specified
- * scheduler instance. This error is only possible on SMP configurations.
- *
- * @see rtems_scheduler_ident().
- */
-rtems_status_code rtems_task_get_priority(
- rtems_id task_id,
- rtems_id scheduler_id,
- rtems_task_priority *priority
-);
-
-/**
- * @brief RTEMS Start Task
- *
- * RTEMS Task Manager
- *
- * This routine implements the rtems_task_start directive. The
- * starting execution point of the task associated with ID is
- * set to entry_point with the initial argument.
- */
-rtems_status_code rtems_task_start(
- rtems_id id,
- rtems_task_entry entry_point,
- rtems_task_argument argument
-);
-
-/**
- * @brief RTEMS Task Wake When
- *
- * This routine implements the rtems_task_wake_when directive. The
- * calling task is blocked until the current time of day is
- * equal to that indicated by time_buffer.
- *
- * @param[in] time_buffer is the pointer to the time and date structure
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_task_wake_when(
- rtems_time_of_day *time_buffer
-);
-
-/**
- * @brief RTEMS Task Wake After
- *
- * This routine implements the rtems_task_wake_after directive. The
- * calling task is blocked until the indicated number of clock
- * ticks have occurred.
- *
- * @param[in] ticks is the number of ticks to wait
- * @retval RTEMS_SUCCESSFUL
- */
-rtems_status_code rtems_task_wake_after(
- rtems_interval ticks
-);
-
-/**
- * @brief rtems_task_is_suspended
- *
- * This directive returns a status indicating whether or not
- * the specified task is suspended.
- */
-rtems_status_code rtems_task_is_suspended(
- rtems_id id
-);
-
-/**
- * @brief Gets the processor affinity set of a task.
- *
- * @param[in] id Identifier of the task. Use @ref RTEMS_SELF to select the
- * executing task.
- * @param[in] cpusetsize Size of the specified affinity set buffer in
- * bytes. This value must be positive.
- * @param[out] cpuset The current processor affinity set of the task. A set
- * bit in the affinity set means that the task can execute on this processor
- * and a cleared bit means the opposite.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ADDRESS The @a cpuset parameter is @c NULL.
- * @retval RTEMS_INVALID_ID Invalid task identifier.
- * @retval RTEMS_INVALID_NUMBER The affinity set buffer is too small for the
- * current processor affinity set of the task.
- */
-rtems_status_code rtems_task_get_affinity(
- rtems_id id,
- size_t cpusetsize,
- cpu_set_t *cpuset
-);
-
-/**
- * @brief Sets the processor affinity set of a task.
- *
- * This function will not change the scheduler of the task. The intersection
- * of the processor affinity set and the set of processors owned by the
- * scheduler of the task must be non-empty. It is not an error if the
- * processor affinity set contains processors that are not part of the set of
- * processors owned by the scheduler instance of the task. A task will simply
- * not run under normal circumstances on these processors since the scheduler
- * ignores them. Some locking protocols may temporarily use processors that
- * are not included in the processor affinity set of the task. It is also not
- * an error if the processor affinity set contains processors that are not part
- * of the system.
- *
- * @param[in] id Identifier of the task. Use @ref RTEMS_SELF to select the
- * executing task.
- * @param[in] cpusetsize Size of the specified affinity set buffer in
- * bytes. This value must be positive.
- * @param[in] cpuset The new processor affinity set for the task. A set bit in
- * the affinity set means that the task can execute on this processor and a
- * cleared bit means the opposite.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ADDRESS The @a cpuset parameter is @c NULL.
- * @retval RTEMS_INVALID_ID Invalid task identifier.
- * @retval RTEMS_INVALID_NUMBER Invalid processor affinity set.
- */
-rtems_status_code rtems_task_set_affinity(
- rtems_id id,
- size_t cpusetsize,
- const cpu_set_t *cpuset
-);
-
-/**
- * @brief Gets the scheduler of a task.
- *
- * @param[in] task_id Identifier of the task. Use @ref RTEMS_SELF to select
- * the executing task.
- * @param[out] scheduler_id Identifier of the scheduler instance.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ADDRESS The @a scheduler_id parameter is @c NULL.
- * @retval RTEMS_INVALID_ID Invalid task identifier.
- */
-rtems_status_code rtems_task_get_scheduler(
- rtems_id task_id,
- rtems_id *scheduler_id
-);
-
-/**
- * @brief Sets the scheduler instance of a task.
- *
- * Initially, the scheduler instance of a task is set to the scheduler instance
- * of the task that created it. This directive allows to move a task from its
- * current scheduler instance to another specified by the scheduler identifier.
- *
- * @param[in] task_id Identifier of the task. Use @ref RTEMS_SELF to select
- * the executing task.
- * @param[in] scheduler_id Identifier of the scheduler instance.
- * @param[in] priority The task priority with respect to the new scheduler
- * instance. The real and initial priority of the task is set to this value.
- * The initial priority is used by rtems_task_restart() for example.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_ILLEGAL_ON_REMOTE_OBJECT Directive is illegal on remote tasks.
- * @retval RTEMS_INVALID_ID Invalid task or scheduler identifier.
- * @retval RTEMS_INVALID_PRIORITY Invalid priority.
- * @retval RTEMS_RESOURCE_IN_USE The task owns resources which deny a scheduler
- * change.
- *
- * @see rtems_scheduler_ident().
- */
-rtems_status_code rtems_task_set_scheduler(
- rtems_id task_id,
- rtems_id scheduler_id,
- rtems_task_priority priority
-);
-
-/**
- * @brief RTEMS Get Self Task Id
- *
- * This directive returns the ID of the currently executing task.
- */
-rtems_id rtems_task_self(void);
-
-/**
- * @brief Task visitor.
- *
- * @param[in] tcb The task control block.
- * @param[in] arg The visitor argument.
- *
- * @retval true Stop the iteration.
- * @retval false Otherwise.
- *
- * @see rtems_task_iterate().
- */
-typedef bool ( *rtems_task_visitor )( rtems_tcb *tcb, void *arg );
-
-/**
- * @brief Iterates over all tasks in the system.
- *
- * This operation covers all tasks of all APIs.
- *
- * Must be called from task context. This operation obtains and releases the
- * objects allocator lock. The task visitor is called while owning the objects
- * allocator lock. It is possible to perform blocking operations in the task
- * visitor, however, take care that no deadlocks via the object allocator lock
- * can occur.
- *
- * @param[in] visitor The task visitor.
- * @param[in] arg The visitor argument.
- */
-void rtems_task_iterate(
- rtems_task_visitor visitor,
- void *arg
-);
-
-/**
- * @brief Identifies a scheduler by its name.
- *
- * The scheduler name is determined by the scheduler configuration.
- *
- * @param[in] name The scheduler name.
- * @param[out] id The scheduler identifier associated with the name.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ADDRESS The @a id parameter is @c NULL.
- * @retval RTEMS_INVALID_NAME Invalid scheduler name.
- */
-rtems_status_code rtems_scheduler_ident(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief Identifies a scheduler by a processor index.
- *
- * @param[in] cpu_index The processor index.
- * @param[out] id The scheduler identifier associated with the processor index.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ADDRESS The @a id parameter is @c NULL.
- * @retval RTEMS_INVALID_NAME Invalid processor index.
- * @retval RTEMS_INCORRECT_STATE The processor index is valid, however, this
- * processor is not owned by a scheduler.
- */
-rtems_status_code rtems_scheduler_ident_by_processor(
- uint32_t cpu_index,
- rtems_id *id
-);
-
-/**
- * @brief Identifies a scheduler by a processor set.
- *
- * The scheduler is selected according to the highest numbered online processor
- * in the specified processor set.
- *
- * @param[in] cpusetsize Size of the specified processor set buffer in
- * bytes. This value must be positive.
- * @param[out] cpuset The processor set to identify the scheduler.
- * @param[out] id The scheduler identifier associated with the processor set.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ADDRESS The @a id parameter is @c NULL.
- * @retval RTEMS_INVALID_SIZE Invalid processor set size.
- * @retval RTEMS_INVALID_NAME The processor set contains no online processor.
- * @retval RTEMS_INCORRECT_STATE The processor set is valid, however, the
- * highest numbered online processor in the specified processor set is not
- * owned by a scheduler.
- */
-rtems_status_code rtems_scheduler_ident_by_processor_set(
- size_t cpusetsize,
- const cpu_set_t *cpuset,
- rtems_id *id
-);
-
-/**
- * @brief Gets the set of processors owned by the specified scheduler instance.
- *
- * @param[in] scheduler_id Identifier of the scheduler instance.
- * @param[in] cpusetsize Size of the specified processor set buffer in
- * bytes. This value must be positive.
- * @param[out] cpuset The processor set owned by the scheduler. A set bit in
- * the processor set means that this processor is owned by the scheduler and a
- * cleared bit means the opposite.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ADDRESS The @a cpuset parameter is @c NULL.
- * @retval RTEMS_INVALID_ID Invalid scheduler instance identifier.
- * @retval RTEMS_INVALID_NUMBER The processor set buffer is too small for the
- * set of processors owned by the scheduler.
- */
-rtems_status_code rtems_scheduler_get_processor_set(
- rtems_id scheduler_id,
- size_t cpusetsize,
- cpu_set_t *cpuset
-);
-
-/**
- * @brief Adds a processor to the set of processors owned by the specified
- * scheduler instance.
- *
- * Must be called from task context. This operation obtains and releases the
- * objects allocator lock.
- *
- * @param[in] scheduler_id Identifier of the scheduler instance.
- * @param[in] cpu_index Index of the processor to add.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ID Invalid scheduler instance identifier.
- * @retval RTEMS_NOT_CONFIGURED The processor is not configured to be used by
- * the application.
- * @retval RTEMS_INCORRECT_STATE The processor is configured to be used by
- * the application, however, it is not online.
- * @retval RTEMS_RESOURCE_IN_USE The processor is already assigned to a
- * scheduler instance.
- */
-rtems_status_code rtems_scheduler_add_processor(
- rtems_id scheduler_id,
- uint32_t cpu_index
-);
-
-/**
- * @brief Removes a processor from set of processors owned by the specified
- * scheduler instance.
- *
- * Must be called from task context. This operation obtains and releases the
- * objects allocator lock. Removing a processor from a scheduler is a complex
- * operation that involves all tasks of the system.
- *
- * @param[in] scheduler_id Identifier of the scheduler instance.
- * @param[in] cpu_index Index of the processor to add.
- *
- * @retval RTEMS_SUCCESSFUL Successful operation.
- * @retval RTEMS_INVALID_ID Invalid scheduler instance identifier.
- * @retval RTEMS_INVALID_NUMBER The processor is not owned by the specified
- * scheduler instance.
- * @retval RTEMS_RESOURCE_IN_USE The set of processors owned by the specified
- * scheduler instance would be empty after the processor removal and there
- * exists a non-idle task that uses this scheduler instance as its home
- * scheduler instance.
- */
-rtems_status_code rtems_scheduler_remove_processor(
- rtems_id scheduler_id,
- uint32_t cpu_index
-);
-
-/**@}*/
-
-/**
- * This is the API specific information required by each thread for
- * the RTEMS API to function correctly.
- *
- */
-typedef struct {
- /** This field contains the event control for this task. */
- Event_Control Event;
- /** This field contains the system event control for this task. */
- Event_Control System_event;
- /** This field contains the Classic API Signal information for this task. */
- ASR_Information Signal;
-
- /**
- * @brief Signal post-switch action in case signals are pending.
- */
- Thread_Action Signal_action;
-} RTEMS_API_Control;
-
-/**
- * @brief _RTEMS_tasks_Initialize_user_tasks_body
- *
- * This routine creates and starts all configured user
- * initialization threads.
- *
- * Input parameters: NONE
- *
- * Output parameters: NONE
- *
- * RTEMS Task Manager
- */
-
-extern void _RTEMS_tasks_Initialize_user_tasks_body( void );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/tasksimpl.h b/cpukit/rtems/include/rtems/rtems/tasksimpl.h
deleted file mode 100644
index b0432351f3..0000000000
--- a/cpukit/rtems/include/rtems/rtems/tasksimpl.h
+++ /dev/null
@@ -1,131 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicTasksImpl
- *
- * @brief Classic Tasks Manager Implementation
- */
-
-/* COPYRIGHT (c) 1989-2014.
- * 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_RTEMS_TASKSIMPL_H
-#define _RTEMS_RTEMS_TASKSIMPL_H
-
-#include <rtems/rtems/tasks.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/schedulerimpl.h>
-#include <rtems/score/threadimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicTasksImpl Classic Tasks Manager Implementation
- *
- * @ingroup ClassicTasks
- *
- * @{
- */
-
-/**
- * The following instantiates the information control block used to
- * manage this class of objects.
- */
-extern Thread_Information _RTEMS_tasks_Information;
-
-/**
- * @brief RTEMS User Task Initialization
- *
- * This routine creates and starts all configured user
- * initialization threads.
- */
-void _RTEMS_tasks_Initialize_user_tasks( void );
-
-RTEMS_INLINE_ROUTINE Thread_Control *_RTEMS_tasks_Allocate(void)
-{
- _Objects_Allocator_lock();
-
- _Thread_Kill_zombies();
-
- return (Thread_Control *)
- _Objects_Allocate_unprotected( &_RTEMS_tasks_Information.Objects );
-}
-
-/**
- * @brief Frees a task control block.
- *
- * This routine frees a task control block to the
- * inactive chain of free task control blocks.
- */
-RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free (
- Thread_Control *the_task
-)
-{
- _Objects_Free(
- _Objects_Get_information_id( the_task->Object.id ),
- &the_task->Object
- );
-}
-
-/**
- * @brief Converts the RTEMS API priority to the corresponding SuperCore
- * priority and validates it.
- *
- * The RTEMS API system priority is accepted as valid.
- *
- * @param[in] scheduler The scheduler instance.
- * @param[in] priority The RTEMS API priority to convert and validate.
- * @param[out] valid Indicates if the RTEMS API priority is valid and a
- * corresponding SuperCore priority in the specified scheduler instance
- * exists.
- *
- * @return The corresponding SuperCore priority.
- */
-RTEMS_INLINE_ROUTINE Priority_Control _RTEMS_Priority_To_core(
- const Scheduler_Control *scheduler,
- rtems_task_priority priority,
- bool *valid
-)
-{
- *valid = ( priority <= scheduler->maximum_priority );
-
- return _Scheduler_Map_priority( scheduler, (Priority_Control) priority );
-}
-
-/**
- * @brief Converts the SuperCore priority to the corresponding RTEMS API
- * priority.
- *
- * @param[in] scheduler The scheduler instance.
- * @param[in] priority The SuperCore priority to convert.
- *
- * @return The corresponding RTEMS API priority.
- */
-RTEMS_INLINE_ROUTINE rtems_task_priority _RTEMS_Priority_From_core(
- const Scheduler_Control *scheduler,
- Priority_Control priority
-)
-{
- return (rtems_task_priority)
- _Scheduler_Unmap_priority( scheduler, priority );
-}
-
-/**@}*/
-
-#if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/rtems/taskmp.h>
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/timer.h b/cpukit/rtems/include/rtems/rtems/timer.h
deleted file mode 100644
index 032c49525a..0000000000
--- a/cpukit/rtems/include/rtems/rtems/timer.h
+++ /dev/null
@@ -1,384 +0,0 @@
-/**
- * @file rtems/rtems/timer.h
- *
- * @defgroup ClassicTimer Timers
- *
- * @ingroup ClassicRTEMS
- * @brief Instantiate RTEMS Timer Data
- *
- * This include file contains all the constants, structures, and
- * prototypes associated with the Timer Manager. This manager provides
- * facilities to configure, initiate, cancel, and delete timers which will
- * fire at specified intervals of time.
- *
- * Directives provided are:
- *
- * - create a timer
- * - get an ID of a timer
- * - delete a timer
- * - set timer to fire in context of clock tick
- * - after a number of ticks have passed
- * - when a specified date and time has been reached
- * - initiate the timer server task
- * - set timer to fire in context of the timer server task
- * - after a number of ticks have passed
- * - when a specified date and time has been reached
- * - reset a timer
- * - cancel a time
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * Copyright (c) 2009, 2016 embedded brains GmbH.
- *
- * 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_RTEMS_TIMER_H
-#define _RTEMS_RTEMS_TIMER_H
-
-#include <rtems/rtems/attr.h>
-#include <rtems/rtems/status.h>
-#include <rtems/rtems/tasks.h>
-#include <rtems/rtems/types.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicTimer Timers
- *
- * @ingroup ClassicRTEMS
- *
- * This encapsulates functionality related to the Classic API Timer
- * Manager. This manager provides functionality which allows the
- * application to schedule the execution of methods at a specified
- * time in the future. These methods may be scheduled based upon
- * interval or wall time and may be executed in either the clock tick
- * ISR or in a special dedicated timer server task.
- */
-/**@{*/
-
-#define TIMER_CLASS_BIT_TIME_OF_DAY 0x1
-
-#define TIMER_CLASS_BIT_ON_TASK 0x2
-
-#define TIMER_CLASS_BIT_NOT_DORMANT 0x4
-
-/**
- * The following enumerated type details the classes to which a timer
- * may belong.
- */
-typedef enum {
- /**
- * This value indicates the timer is currently not in use.
- */
- TIMER_DORMANT,
-
- /**
- * This value indicates the timer is currently in use as an interval
- * timer which will fire in the clock tick ISR.
- */
- TIMER_INTERVAL = TIMER_CLASS_BIT_NOT_DORMANT,
-
- /**
- * This value indicates the timer is currently in use as an interval
- * timer which will fire in the timer server task.
- */
- TIMER_INTERVAL_ON_TASK =
- TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_ON_TASK,
-
- /**
- * This value indicates the timer is currently in use as an time of day
- * timer which will fire in the clock tick ISR.
- */
- TIMER_TIME_OF_DAY =
- TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_TIME_OF_DAY,
-
- /**
- * This value indicates the timer is currently in use as an time of day
- * timer which will fire in the timer server task.
- */
- TIMER_TIME_OF_DAY_ON_TASK =
- TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_TIME_OF_DAY |
- TIMER_CLASS_BIT_ON_TASK
-} Timer_Classes;
-
-/**
- * The following types define a pointer to a timer service routine.
- */
-typedef void rtems_timer_service_routine;
-
-/**
- * This type defines the type used to manage and indirectly invoke
- * Timer Service Routines (TSRs). This defines the prototype and interface
- * for a function which is to be used as a TSR.
- */
-typedef rtems_timer_service_routine ( *rtems_timer_service_routine_entry )(
- rtems_id,
- void *
- );
-
-/**
- * The following records define the control block used to manage
- * each timer.
- */
-typedef struct {
- /** This field is the object management portion of a Timer instance. */
- Objects_Control Object;
- /** This field is the Watchdog instance which will be the scheduled. */
- Watchdog_Control Ticker;
- /** This field indicates what type of timer this currently is. */
- Timer_Classes the_class;
- /** This field is the timer service routine. */
- rtems_timer_service_routine_entry routine;
- /** This field is the timer service routine user data. */
- void *user_data;
- /** This field is the timer interval in ticks or seconds. */
- Watchdog_Interval initial;
- /** This field is the timer start time point in ticks. */
- Watchdog_Interval start_time;
- /** This field is the timer stop time point in ticks. */
- Watchdog_Interval stop_time;
-} Timer_Control;
-
-/**
- * @brief RTEMS Create Timer
- *
- * This routine implements the rtems_timer_create directive. The
- * timer will have the name name. It returns the id of the
- * created timer in ID.
- *
- * @param[in] name is the timer name
- * @param[out] id is the pointer to timer id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful
- */
-rtems_status_code rtems_timer_create(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief RTEMS Timer Name to Id
- *
- * This routine implements the rtems_timer_ident directive.
- * This directive returns the timer ID associated with name.
- * If more than one timer is named name, then the timer
- * to which the ID belongs is arbitrary.
- *
- * @param[in] name is the user defined message queue name
- * @param[in] id is the pointer to timer id
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * id filled with the message queue id
- */
-rtems_status_code rtems_timer_ident(
- rtems_name name,
- rtems_id *id
-);
-
-/**
- * @brief rtems_timer_cancel
- *
- * This routine implements the rtems_timer_cancel directive. It is used
- * to stop the timer associated with ID from firing.
- */
-rtems_status_code rtems_timer_cancel(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Delete Timer
- *
- * This routine implements the rtems_timer_delete directive. The
- * timer indicated by ID is deleted.
- *
- * @param[in] id is the timer id
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_timer_delete(
- rtems_id id
-);
-
-/**
- * @brief RTEMS Timer Fire After
- *
- * This routine implements the rtems_timer_fire_after directive. It
- * initiates the timer associated with ID to fire in ticks clock ticks.
- * When the timer fires, the routine will be invoked in the context
- * of the rtems_clock_tick directive which is normally invoked as
- * part of servicing a periodic interupt.
- *
- * @param[in] id is the timer id
- * @param[in] ticks is the interval until routine is fired
- * @param[in] routine is the routine to schedule
- * @param[in] user_data is the passed as argument to routine when it is fired
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_timer_fire_after(
- rtems_id id,
- rtems_interval ticks,
- rtems_timer_service_routine_entry routine,
- void *user_data
-);
-
-/**
- * @brief RTEMS Timer Server Fire After
- *
- * This routine implements the rtems_timer_server_fire_after directive. It
- * initiates the timer associated with ID to fire in ticks clock
- * ticks. When the timer fires, the routine will be invoked by the
- * Timer Server in the context of a task NOT IN THE CONTEXT of the
- * clock tick interrupt.
- *
- * @param[in] id is the timer id
- * @param[in] ticks is the interval until routine is fired
- * @param[in] routine is the routine to schedule
- * @param[in] user_data is the passed as argument to routine when it is fired
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_timer_server_fire_after(
- rtems_id id,
- rtems_interval ticks,
- rtems_timer_service_routine_entry routine,
- void *user_data
-);
-
-/**
- * @brief RTEMS Timer Fire When
- *
- * This routine implements the rtems_timer_fire_when directive. It
- * initiates the timer associated with ID to fire at wall_time
- * When the timer fires, the routine will be invoked in the context
- * of the rtems_clock_tick directive which is normally invoked as
- * part of servicing a periodic interupt.
- *
- * @param[in] id is the timer id
- * @param[in] wall_time is the time of day to fire timer
- * @param[in] routine is the routine to schedule
- * @param[in] user_data is the passed as argument to routine when it is fired
- *
- * @retval This method returns RTEMS_SUCCESSFUL if there was not an
- * error. Otherwise, a status code is returned indicating the
- * source of the error.
- */
-rtems_status_code rtems_timer_fire_when(
- rtems_id id,
- rtems_time_of_day *wall_time,
- rtems_timer_service_routine_entry routine,
- void *user_data
-);
-
-/**
- * @brief RTEMS Timer Server Fire When Directive
- *
- * Timer Manager - RTEMS Timer Server Fire When Directive
- *
- * This routine implements the rtems_timer_server_fire_when directive. It
- * initiates the timer associated with ID to fire at wall_time
- * When the timer fires, the routine will be invoked by the
- * Timer Server in the context of a task NOT IN THE CONTEXT of the
- * clock tick interrupt.
- */
-rtems_status_code rtems_timer_server_fire_when(
- rtems_id id,
- rtems_time_of_day *wall_time,
- rtems_timer_service_routine_entry routine,
- void *user_data
-);
-
-/**
- * @brief RTEMS Timer Reset
- *
- * Timer Manager - RTEMS Timer Reset
- *
- * This routine implements the rtems_timer_reset directive. It is used
- * to reinitialize the interval timer associated with ID just as if
- * rtems_timer_fire_after were re-invoked with the same arguments that
- * were used to initiate this timer.
- */
-rtems_status_code rtems_timer_reset(
- rtems_id id
-);
-
-/**
- * @brief Initiates the timer server.
- *
- * This directive creates and starts the server for task-based timers.
- * It must be invoked before any task-based timers can be initiated.
- *
- * @param priority The timer server task priority.
- * @param stack_size The stack size in bytes for the timer server task.
- * @param attribute_set The timer server task attributes.
- *
- * @return This method returns RTEMS_SUCCESSFUL if successful and an
- * error code otherwise.
- */
-rtems_status_code rtems_timer_initiate_server(
- rtems_task_priority priority,
- size_t stack_size,
- rtems_attribute attribute_set
-);
-
-/**
- * This is the default value for the priority of the Timer Server.
- * When given this priority, a special high priority not accessible
- * via the Classic API is used.
- */
-#define RTEMS_TIMER_SERVER_DEFAULT_PRIORITY (uint32_t) -1
-
-/**
- * This is the structure filled in by the timer get information
- * service.
- */
-typedef struct {
- /** This indicates the current type of the timer. */
- Timer_Classes the_class;
- /** This indicates the initial requested interval. */
- Watchdog_Interval initial;
- /** This indicates the time the timer was initially scheduled. */
- Watchdog_Interval start_time;
- /** This indicates the time the timer is scheduled to fire. */
- Watchdog_Interval stop_time;
-} rtems_timer_information;
-
-/**
- * @brief RTEMS Get Timer Information
- *
- * This routine implements the rtems_timer_get_information directive.
- * This directive returns information about the timer.
- *
- * @param[in] id is the timer id
- * @param[in] the_info is the pointer to timer information block
- *
- * @retval RTEMS_SUCCESSFUL if successful or error code if unsuccessful and
- * *the_info region information block filled in
- */
-rtems_status_code rtems_timer_get_information(
- rtems_id id,
- rtems_timer_information *the_info
-);
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/timerimpl.h b/cpukit/rtems/include/rtems/rtems/timerimpl.h
deleted file mode 100644
index d8581bfcd8..0000000000
--- a/cpukit/rtems/include/rtems/rtems/timerimpl.h
+++ /dev/null
@@ -1,209 +0,0 @@
-/**
- * @file
- *
- * @ingroup ClassicTimerImpl
- *
- * @brief Classic Timer Implementation
- */
-
-/*
- * COPYRIGHT (c) 1989-2011.
- * On-Line Applications Research Corporation (OAR).
- *
- * Copyright (c) 2016 embedded brains GmbH.
- *
- * 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_RTEMS_TIMER_INL
-#define _RTEMS_RTEMS_TIMER_INL
-
-#include <rtems/rtems/timer.h>
-#include <rtems/score/objectimpl.h>
-#include <rtems/score/thread.h>
-#include <rtems/score/watchdogimpl.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @defgroup ClassicTimerImpl Classic Timer Implementation
- *
- * @ingroup ClassicTimer
- *
- * @{
- */
-
-typedef struct Timer_server_Control {
- ISR_LOCK_MEMBER( Lock )
-
- Chain_Control Pending;
-
- Objects_Id server_id;
-} Timer_server_Control;
-
-/**
- * @brief Pointer to default timer server control block.
- *
- * This value is @c NULL when the default timer server is not initialized.
- */
-extern Timer_server_Control *volatile _Timer_server;
-
-/**
- * The following defines the information control block used to manage
- * this class of objects.
- */
-extern Objects_Information _Timer_Information;
-
-/**
- * @brief Timer_Allocate
- *
- * This function allocates a timer control block from
- * the inactive chain of free timer control blocks.
- */
-RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Allocate( void )
-{
- return (Timer_Control *) _Objects_Allocate( &_Timer_Information );
-}
-
-/**
- * @brief Timer_Free
- *
- * This routine frees a timer control block to the
- * inactive chain of free timer control blocks.
- */
-RTEMS_INLINE_ROUTINE void _Timer_Free (
- Timer_Control *the_timer
-)
-{
- _Objects_Free( &_Timer_Information, &the_timer->Object );
-}
-
-RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get(
- Objects_Id id,
- ISR_lock_Context *lock_context
-)
-{
- return (Timer_Control *) _Objects_Get(
- id,
- lock_context,
- &_Timer_Information
- );
-}
-
-RTEMS_INLINE_ROUTINE Per_CPU_Control *_Timer_Acquire_critical(
- Timer_Control *the_timer,
- ISR_lock_Context *lock_context
-)
-{
- Per_CPU_Control *cpu;
-
- cpu = _Watchdog_Get_CPU( &the_timer->Ticker );
- _Watchdog_Per_CPU_acquire_critical( cpu, lock_context );
-
- return cpu;
-}
-
-RTEMS_INLINE_ROUTINE void _Timer_Release(
- Per_CPU_Control *cpu,
- ISR_lock_Context *lock_context
-)
-{
- _Watchdog_Per_CPU_release_critical( cpu, lock_context );
- _ISR_lock_ISR_enable( lock_context );
-}
-
-RTEMS_INLINE_ROUTINE bool _Timer_Is_interval_class(
- Timer_Classes the_class
-)
-{
- Timer_Classes mask =
- TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_TIME_OF_DAY;
-
- return ( the_class & mask ) == TIMER_CLASS_BIT_NOT_DORMANT;
-}
-
-RTEMS_INLINE_ROUTINE bool _Timer_Is_on_task_class(
- Timer_Classes the_class
-)
-{
- Timer_Classes mask =
- TIMER_CLASS_BIT_NOT_DORMANT | TIMER_CLASS_BIT_ON_TASK;
-
- return ( the_class & mask ) == mask;
-}
-
-RTEMS_INLINE_ROUTINE Per_CPU_Watchdog_index _Timer_Watchdog_header_index(
- Timer_Classes the_class
-)
-{
- return ( the_class & TIMER_CLASS_BIT_TIME_OF_DAY );
-}
-
-RTEMS_INLINE_ROUTINE Watchdog_Interval _Timer_Get_CPU_ticks(
- const Per_CPU_Control *cpu
-)
-{
- return (Watchdog_Interval) cpu->Watchdog.ticks;
-}
-
-rtems_status_code _Timer_Fire(
- rtems_id id,
- rtems_interval interval,
- rtems_timer_service_routine_entry routine,
- void *user_data,
- Timer_Classes the_class,
- Watchdog_Service_routine_entry adaptor
-);
-
-rtems_status_code _Timer_Fire_after(
- rtems_id id,
- rtems_interval ticks,
- rtems_timer_service_routine_entry routine,
- void *user_data,
- Timer_Classes the_class,
- Watchdog_Service_routine_entry adaptor
-);
-
-rtems_status_code _Timer_Fire_when(
- rtems_id id,
- const rtems_time_of_day *wall_time,
- rtems_timer_service_routine_entry routine,
- void *user_data,
- Timer_Classes the_class,
- Watchdog_Service_routine_entry adaptor
-);
-
-void _Timer_Cancel( Per_CPU_Control *cpu, Timer_Control *the_timer );
-
-void _Timer_Routine_adaptor( Watchdog_Control *the_watchdog );
-
-void _Timer_server_Routine_adaptor( Watchdog_Control *the_watchdog );
-
-RTEMS_INLINE_ROUTINE void _Timer_server_Acquire_critical(
- Timer_server_Control *timer_server,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_Acquire( &timer_server->Lock, lock_context );
-}
-
-RTEMS_INLINE_ROUTINE void _Timer_server_Release_critical(
- Timer_server_Control *timer_server,
- ISR_lock_Context *lock_context
-)
-{
- _ISR_lock_Release( &timer_server->Lock, lock_context );
-}
-
-/**@}*/
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/include/rtems/rtems/types.h b/cpukit/rtems/include/rtems/rtems/types.h
deleted file mode 100644
index 82c0edd3c3..0000000000
--- a/cpukit/rtems/include/rtems/rtems/types.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/**
- * @file
- *
- * @defgroup ClassicTypes Types
- *
- * @ingroup ClassicRTEMS
- * @brief Types used by Classic API.
- */
-
-/* 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_RTEMS_TYPES_H
-#define _RTEMS_RTEMS_TYPES_H
-
-/*
- * RTEMS basic type definitions
- */
-
-#include <stdint.h>
-#include <rtems/score/heap.h>
-#include <rtems/score/object.h>
-#include <rtems/score/priority.h>
-#include <rtems/score/watchdog.h>
-#include <rtems/rtems/modes.h>
-#if defined(RTEMS_MULTIPROCESSING)
-#include <rtems/score/mpci.h>
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/**
- * @addtogroup ClassicRTEMS
- */
-/**@{**/
-
-#ifdef RTEMS_DEPRECATED_TYPES
-/**
- * @brief Single precision float type.
- *
- * @deprecated Use @c float instead.
- */
-typedef single_precision rtems_single;
-
-/**
- * @brief Double precision float type.
- *
- * @deprecated Use @c double instead.
- */
-typedef double_precision rtems_double;
-
-/**
- * @brief RTEMS boolean type.
- *
- * @deprecated Use @c bool instead
- */
-typedef boolean rtems_boolean;
-#endif
-
-/**
- * @brief Classic API @ref ClassicRTEMSSubSecObjectNames "object name" type.
- *
- * Contains the name of a Classic API object. It is an unsigned 32-bit integer
- * which can be treated as a numeric value or initialized using
- * rtems_build_name() to contain four ASCII characters.
- */
-typedef uint32_t rtems_name;
-
-/**
- * @brief Used to manage and manipulate
- * @ref ClassicRTEMSSubSecObjectIdentifiers "RTEMS object identifiers".
- */
-typedef Objects_Id rtems_id;
-
-/**
- * @brief Invalid object identifier value.
- *
- * No object can have this identifier value.
- */
-#define RTEMS_ID_NONE OBJECTS_ID_NONE
-
-/**
- * @brief Public name for task context area.
- */
-typedef Context_Control rtems_context;
-
-#if (CPU_HARDWARE_FP == TRUE) || (CPU_SOFTWARE_FP == TRUE)
-/**
- * @brief Public name for task floating point context area.
- */
-typedef Context_Control_fp rtems_context_fp;
-#endif
-
-#if (CPU_ISR_PASSES_FRAME_POINTER == TRUE)
-/**
- * @brief Defines the format of the interrupt stack frame as it appears to a
- * user ISR.
- *
- * This data structure is only provided if the interrupt stack frame is passed
- * to the ISR handler.
- *
- * @see rtems_interrupt_catch().
- */
-typedef CPU_Interrupt_frame rtems_interrupt_frame;
-#endif
-
-/**
- * @brief Information structure returned by the Heap Handler via the Region
- * Manager.
- */
-typedef Heap_Information_block region_information_block;
-
-/**
- * @brief Used to manage and manipulate intervals specified by
- * @ref ClassicRTEMSSecTime "clock ticks".
- */
-typedef Watchdog_Interval rtems_interval;
-
-/**
- * @brief Represents the CPU usage per thread.
- *
- * When using nanoseconds granularity timing, RTEMS may internally use a
- * variety of representations.
- */
-typedef struct timespec rtems_thread_cpu_usage_t;
-
-/**
- * @brief Data structure to manage and manipulate calendar
- * @ref ClassicRTEMSSecTime "time".
- */
-typedef struct {
- /**
- * @brief Year, A.D.
- */
- uint32_t year;
- /**
- * @brief Month, 1 .. 12.
- */
- uint32_t month;
- /**
- * @brief Day, 1 .. 31.
- */
- uint32_t day;
- /**
- * @brief Hour, 0 .. 23.
- */
- uint32_t hour;
- /**
- * @brief Minute, 0 .. 59.
- */
- uint32_t minute;
- /**
- * @brief Second, 0 .. 59.
- */
- uint32_t second;
- /**
- * @brief Elapsed ticks between seconds.
- */
- uint32_t ticks;
-} rtems_time_of_day;
-
-/**
- * @brief Task mode type.
- */
-typedef Modes_Control rtems_mode;
-
-/*
- * MPCI related entries
- */
-#if defined(RTEMS_MULTIPROCESSING)
-/**
- * @brief Set of MPCI packet classes which are internally dispatched to the
- * managers.
- */
-typedef MP_packet_Classes rtems_mp_packet_classes;
-
-/**
- * @brief Prefix found at the beginning of each MPCI packet sent between nodes.
- */
-typedef MP_packet_Prefix rtems_packet_prefix;
-
-/**
- * @brief Indirect pointer to the initialization entry point for an MPCI
- * handler.
- */
-typedef MPCI_initialization_entry rtems_mpci_initialization_entry;
-
-/**
- * @brief Indirect pointer to the get_packet entry point for an MPCI handler.
- */
-typedef MPCI_get_packet_entry rtems_mpci_get_packet_entry;
-
-/**
- * @brief Indirect pointer to the return_packet entry point for an MPCI
- * handler.
- */
-typedef MPCI_return_packet_entry rtems_mpci_return_packet_entry;
-
-/**
- * @brief Indirect pointer to the send_packet entry point for an MPCI handler.
- */
-typedef MPCI_send_entry rtems_mpci_send_packet_entry;
-
-/**
- * @brief Indirect pointer to the receive entry point for an MPCI handler.
- */
-typedef MPCI_receive_entry rtems_mpci_receive_packet_entry;
-
-/**
- * @brief Return type from every MPCI handler routine.
- */
-typedef MPCI_Entry rtems_mpci_entry;
-
-/**
- * @brief Structure which is used to configure an MPCI handler.
- */
-typedef MPCI_Control rtems_mpci_table;
-
-#endif
-
-/** @} */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-/* end of include file */
diff --git a/cpukit/rtems/mainpage.h b/cpukit/rtems/mainpage.h
deleted file mode 100644
index e2d51328cf..0000000000
--- a/cpukit/rtems/mainpage.h
+++ /dev/null
@@ -1,927 +0,0 @@
-/**
- * @file rtems/rtems/mainpage.h
- *
- * This file exists to provide a top level description of RTEMS for Doxygen.
- */
-
-/*
- * COPYRIGHT (c) 1989-2014.
- * 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.
- */
-
-/**
- * @mainpage
- *
- * The RTEMS real-time operating systems is a layered system with each of the
- * public APIs implemented in terms of a common foundation layer called the
- * SuperCore. This is the Doxygen generated documentation for the RTEMS CPU
- * Kit including the Classic API, POSIX API and SuperCore.
- */
-
-/**
- * @page RTEMSPreface RTEMS History and Introduction
- *
- * In recent years, the cost required to develop a software product has
- * increased significantly while the target hardware costs have decreased. Now
- * a larger portion of money is expended in developing, using, and maintaining
- * software. The trend in computing costs is the complete dominance of software
- * over hardware costs. Because of this, it is necessary that formal
- * disciplines be established to increase the probability that software is
- * characterized by a high degree of correctness, maintainability, and
- * portability. In addition, these disciplines must promote practices that aid
- * in the consistent and orderly development of a software system within
- * schedule and budgetary constraints. To be effective, these disciplines must
- * adopt standards which channel individual software efforts toward a common
- * goal.
- *
- * The push for standards in the software development field has been met with
- * various degrees of success. The Microprocessor Operating Systems Interfaces
- * (MOSI) effort has experienced only limited success. As popular as the UNIX
- * operating system has grown, the attempt to develop a standard interface
- * definition to allow portable application development has only recently begun
- * to produce the results needed in this area. Unfortunately, very little
- * effort has been expended to provide standards addressing the needs of the
- * real-time community. Several organizations have addressed this need during
- * recent years.
- *
- * The Real Time Executive Interface Definition (RTEID) was developed by
- * Motorola with technical input from Software Components Group. RTEID was
- * adopted by the VMEbus International Trade Association (VITA) as a baseline
- * draft for their proposed standard multiprocessor, real-time executive
- * interface, Open Real-Time Kernel Interface Definition (ORKID). These two
- * groups are currently working together with the IEEE P1003.4 committee to
- * insure that the functionality of their proposed standards is adopted as the
- * real-time extensions to POSIX.
- *
- * This emerging standard defines an interface for the development of real-time
- * software to ease the writing of real-time application programs that are
- * directly portable across multiple real-time executive implementations. This
- * interface includes both the source code interfaces and run-time behavior as
- * seen by a real-time application. It does not include the details of how a
- * kernel implements these functions. The standard's goal is to serve as a
- * complete definition of external interfaces so that application code that
- * conforms to these interfaces will execute properly in all real-time
- * executive environments. With the use of a standards compliant executive,
- * routines that acquire memory blocks, create and manage message queues,
- * establish and use semaphores, and send and receive signals need not be
- * redeveloped for a different real-time environment as long as the new
- * environment is compliant with the standard. Software developers need only
- * concentrate on the hardware dependencies of the real-time system.
- * Furthermore, most hardware dependencies for real-time applications can be
- * localized to the device drivers.
- *
- * A compliant executive provides simple and flexible real-time
- * multiprocessing. It easily lends itself to both tightly-coupled and
- * loosely-coupled configurations (depending on the system hardware
- * configuration). Objects such as tasks, queues, events, signals, semaphores,
- * and memory blocks can be designated as global objects and accessed by any
- * task regardless of which processor the object and the accessing task reside.
- *
- * The acceptance of a standard for real-time executives will produce the same
- * advantages enjoyed from the push for UNIX standardization by AT&T's System V
- * Interface Definition and IEEE's POSIX efforts. A compliant multiprocessing
- * executive will allow close coupling between UNIX systems and real-time
- * executives to provide the many benefits of the UNIX development environment
- * to be applied to real-time software development. Together they provide the
- * necessary laboratory environment to implement real-time, distributed,
- * embedded systems using a wide variety of computer architectures.
- *
- * A study was completed in 1988, within the Research, Development, and
- * Engineering Center, U.S. Army Missile Command, which compared the various
- * aspects of the Ada programming language as they related to the application
- * of Ada code in distributed and/or multiple processing systems. Several
- * critical conclusions were derived from the study. These conclusions have a
- * major impact on the way the Army develops application software for embedded
- * applications. These impacts apply to both in-house software development and
- * contractor developed software.
- *
- * A conclusion of the analysis, which has been previously recognized by other
- * agencies attempting to utilize Ada in a distributed or multiprocessing
- * environment, is that the Ada programming language does not adequately
- * support multiprocessing. Ada does provide a mechanism for multi-tasking,
- * however, this capability exists only for a single processor system. The
- * language also does not have inherent capabilities to access global named
- * variables, flags or program code. These critical features are essential in
- * order for data to be shared between processors. However, these drawbacks do
- * have workarounds which are sometimes awkward and defeat the intent of
- * software maintainability and portability goals.
- *
- * Another conclusion drawn from the analysis, was that the run time executives
- * being delivered with the Ada compilers were too slow and inefficient to be
- * used in modern missile systems. A run time executive is the core part of the
- * run time system code, or operating system code, that controls task
- * scheduling, input/output management and memory management. Traditionally,
- * whenever efficient executive (also known as kernel) code was required by the
- * application, the user developed in-house software. This software was usually
- * written in assembly language for optimization.
- *
- * Because of this shortcoming in the Ada programming language, software
- * developers in research and development and contractors for project managed
- * systems, are mandated by technology to purchase and utilize off-the-shelf
- * third party kernel code. The contractor, and eventually the Government, must
- * pay a licensing fee for every copy of the kernel code used in an embedded
- * system.
- *
- * The main drawback to this development environment is that the Government
- * does not own, nor has the right to modify code contained within the kernel.
- * V&V techniques in this situation are more difficult than if the complete
- * source code were available. Responsibility for system failures due to faulty
- * software is yet another area to be resolved under this environment.
- *
- * The Guidance and Control Directorate began a software development effort to
- * address these problems. A project to develop an experimental run time kernel
- * was begun that will eliminate the major drawbacks of the Ada programming
- * language mentioned above. The Real Time Executive for Multiprocessor Systems
- * (RTEMS) provides full capabilities for management of tasks, interrupts,
- * time, and multiple processors in addition to those features typical of
- * generic operating systems. The code is Government owned, so no licensing
- * fees are necessary. RTEMS has been implemented in both the Ada and C
- * programming languages. It has been ported to the following processor
- * families:
- *
- * - Altera NIOS II
- * - Analog Devices Blackfin
- * - ARM
- * - Freescale (formerly Motorola) MC68xxx
- * - Freescale (formerly Motorola) MC683xx
- * - Freescale (formerly Motorola) ColdFire
- * - Intel i386 and above
- * - Lattice Semiconductor LM32
- * - MIPS
- * - PowerPC
- * - Renesas (formerly Hitachi) SuperH
- * - Renesas (formerly Hitachi) H8/300
- * - SPARC
- * - Texas Instruments C3x/C4x
- * - UNIX
- *
- * Support for other processor families, including RISC, CISC, and DSP, is
- * planned. Since almost all of RTEMS is written in a high level language,
- * ports to additional processor families require minimal effort.
- *
- * RTEMS multiprocessor support is capable of handling either homogeneous or
- * heterogeneous systems. The kernel automatically compensates for
- * architectural differences (byte swapping, etc.) between processors. This
- * allows a much easier transition from one processor family to another without
- * a major system redesign.
- *
- * Since the proposed standards are still in draft form, RTEMS cannot and does
- * not claim compliance. However, the status of the standard is being carefully
- * monitored to guarantee that RTEMS provides the functionality specified in
- * the standard. Once approved, RTEMS will be made compliant.
- */
-
-/**
- * @page RTEMSOverview RTEMS Overview
- *
- * @section RTEMSOverviewSecIntroduction Introduction
- *
- * RTEMS, Real-Time Executive for Multiprocessor Systems, is a real-time
- * executive (kernel) which provides a high performance environment for
- * embedded military applications including the following features:
- *
- * - multitasking capabilities
- * - homogeneous and heterogeneous multiprocessor systems
- * - event-driven, priority-based, preemptive scheduling
- * - optional rate monotonic scheduling
- * - intertask communication and synchronization
- * - priority inheritance
- * - responsive interrupt management
- * - dynamic memory allocation
- * - high level of user configurability
- *
- * This manual describes the usage of RTEMS for applications written in the C
- * programming language. Those implementation details that are processor
- * dependent are provided in the Applications Supplement documents. A
- * supplement document which addresses specific architectural issues that
- * affect RTEMS is provided for each processor type that is supported.
- *
- * @section RTEMSOverviewSecRealtimeApplicationSystems Real-time Application Systems
- *
- * Real-time application systems are a special class of computer applications.
- * They have a complex set of characteristics that distinguish them from other
- * software problems. Generally, they must adhere to more rigorous
- * requirements. The correctness of the system depends not only on the results
- * of computations, but also on the time at which the results are produced. The
- * most important and complex characteristic of real-time application systems
- * is that they must receive and respond to a set of external stimuli within
- * rigid and critical time constraints referred to as deadlines. Systems can be
- * buried by an avalanche of interdependent, asynchronous or cyclical event
- * streams.
- *
- * Deadlines can be further characterized as either hard or soft based upon the
- * value of the results when produced after the deadline has passed. A deadline
- * is hard if the results have no value or if their use will result in a
- * catastrophic event. In contrast, results which are produced after a soft
- * deadline may have some value.
- *
- * Another distinguishing requirement of real-time application systems is the
- * ability to coordinate or manage a large number of concurrent activities.
- * Since software is a synchronous entity, this presents special problems. One
- * instruction follows another in a repeating synchronous cycle. Even though
- * mechanisms have been developed to allow for the processing of external
- * asynchronous events, the software design efforts required to process and
- * manage these events and tasks are growing more complicated.
- *
- * The design process is complicated further by spreading this activity over a
- * set of processors instead of a single processor. The challenges associated
- * with designing and building real-time application systems become very
- * complex when multiple processors are involved. New requirements such as
- * interprocessor communication channels and global resources that must be
- * shared between competing processors are introduced. The ramifications of
- * multiple processors complicate each and every characteristic of a real-time
- * system.
- *
- * @section RTEMSOverviewSecRealtimeExecutive Real-time Executive
- *
- * Fortunately, real-time operating systems or real-time executives serve as a
- * cornerstone on which to build the application system. A real-time
- * multitasking executive allows an application to be cast into a set of
- * logical, autonomous processes or tasks which become quite manageable. Each
- * task is internally synchronous, but different tasks execute independently,
- * resulting in an asynchronous processing stream. Tasks can be dynamically
- * paused for many reasons resulting in a different task being allowed to
- * execute for a period of time. The executive also provides an interface to
- * other system components such as interrupt handlers and device drivers.
- * System components may request the executive to allocate and coordinate
- * resources, and to wait for and trigger synchronizing conditions. The
- * executive system calls effectively extend the CPU instruction set to support
- * efficient multitasking. By causing tasks to travel through well-defined
- * state transitions, system calls permit an application to demand-switch
- * between tasks in response to real-time events.
- *
- * By proper grouping of responses to stimuli into separate tasks, a system can
- * now asynchronously switch between independent streams of execution, directly
- * responding to external stimuli as they occur. This allows the system design
- * to meet critical performance specifications which are typically measured by
- * guaranteed response time and transaction throughput. The multiprocessor
- * extensions of RTEMS provide the features necessary to manage the extra
- * requirements introduced by a system distributed across several processors.
- * It removes the physical barriers of processor boundaries from the world of
- * the system designer, enabling more critical aspects of the system to receive
- * the required attention. Such a system, based on an efficient real-time,
- * multiprocessor executive, is a more realistic model of the outside world or
- * environment for which it is designed. As a result, the system will always be
- * more logical, efficient, and reliable.
- *
- * By using the directives provided by RTEMS, the real-time applications
- * developer is freed from the problem of controlling and synchronizing
- * multiple tasks and processors. In addition, one need not develop, test,
- * debug, and document routines to manage memory, pass messages, or provide
- * mutual exclusion. The developer is then able to concentrate solely on the
- * application. By using standard software components, the time and cost
- * required to develop sophisticated real-time applications is significantly
- * reduced.
- *
- * @section RTEMSOverviewSecApplicationArchitecture RTEMS Application Architecture
- *
- * One important design goal of RTEMS was to provide a bridge between two
- * critical layers of typical real-time systems. As shown in the following
- * figure, RTEMS serves as a buffer between the project dependent application
- * code and the target hardware. Most hardware dependencies for real-time
- * applications can be localized to the low level device drivers.
- *
- * @todo Image RTEMS Application Architecture
- *
- * The RTEMS I/O interface manager provides an efficient tool for incorporating
- * these hardware dependencies into the system while simultaneously providing a
- * general mechanism to the application code that accesses them. A well
- * designed real-time system can benefit from this architecture by building a
- * rich library of standard application components which can be used repeatedly
- * in other real-time projects.
- *
- * @section RTEMSOverviewSecInternalArchitecture RTEMS Internal Architecture
- *
- * RTEMS can be viewed as a set of layered components that work in harmony to
- * provide a set of services to a real-time application system. The executive
- * interface presented to the application is formed by grouping directives into
- * logical sets called resource managers. Functions utilized by multiple
- * managers such as scheduling, dispatching, and object management are provided
- * in the executive core. The executive core depends on a small set of CPU
- * dependent routines. Together these components provide a powerful run time
- * environment that promotes the development of efficient real-time application
- * systems. The following figure illustrates this organization:
- *
- * @todo Image RTEMS Architecture
- *
- * Subsequent chapters present a detailed description of the capabilities
- * provided by each of the following RTEMS managers:
- *
- * - initialization
- * - task
- * - interrupt
- * - clock
- * - timer
- * - semaphore
- * - message
- * - event
- * - signal
- * - partition
- * - region
- * - dual ported memory
- * - I/O
- * - fatal error
- * - rate monotonic
- * - user extensions
- * - multiprocessing
- *
- * @section RTEMSOverviewSecUserCustomization User Customization and Extensibility
- *
- * As 32-bit microprocessors have decreased in cost, they have become
- * increasingly common in a variety of embedded systems. A wide range of custom
- * and general-purpose processor boards are based on various 32-bit
- * processors. RTEMS was designed to make no assumptions concerning the
- * characteristics of individual microprocessor families or of specific support
- * hardware. In addition, RTEMS allows the system developer a high degree of
- * freedom in customizing and extending its features.
- *
- * RTEMS assumes the existence of a supported microprocessor and sufficient
- * memory for both RTEMS and the real-time application. Board dependent
- * components such as clocks, interrupt controllers, or I/O devices can be
- * easily integrated with RTEMS. The customization and extensibility features
- * allow RTEMS to efficiently support as many environments as possible.
- *
- * @section RTEMSOverviewSecPortability Portability
- *
- * The issue of portability was the major factor in the creation of RTEMS.
- * Since RTEMS is designed to isolate the hardware dependencies in the specific
- * board support packages, the real-time application should be easily ported to
- * any other processor. The use of RTEMS allows the development of real-time
- * applications which can be completely independent of a particular
- * microprocessor architecture.
- *
- * @section RTEMSOverviewSecMemoryRequirements Memory Requirements
- *
- * Since memory is a critical resource in many real-time embedded systems,
- * RTEMS was specifically designed to automatically leave out all services that
- * are not required from the run-time environment. Features such as networking,
- * various fileystems, and many other features are completely optional. This
- * allows the application designer the flexibility to tailor RTEMS to most
- * efficiently meet system requirements while still satisfying even the most
- * stringent memory constraints. As a result, the size of the RTEMS executive
- * is application dependent.
- *
- * RTEMS requires RAM to manage each instance of an RTEMS object that is
- * created. Thus the more RTEMS objects an application needs, the more memory
- * that must be reserved. See Configuring a System Determining Memory
- * Requirements for more details.
- *
- * @todo Link to Configuring a SystemDetermining Memory Requirements
- *
- * RTEMS utilizes memory for both code and data space. Although RTEMS' data
- * space must be in RAM, its code space can be located in either ROM or RAM.
- *
- * @section RTEMSOverviewSecAudience Audience
- *
- * This manual was written for experienced real-time software developers.
- * Although some background is provided, it is assumed that the reader is
- * familiar with the concepts of task management as well as intertask
- * communication and synchronization. Since directives, user related data
- * structures, and examples are presented in C, a basic understanding of the C
- * programming language is required to fully understand the material presented.
- * However, because of the similarity of the Ada and C RTEMS implementations,
- * users will find that the use and behavior of the two implementations is very
- * similar. A working knowledge of the target processor is helpful in
- * understanding some of RTEMS' features. A thorough understanding of the
- * executive cannot be obtained without studying the entire manual because many
- * of RTEMS' concepts and features are interrelated. Experienced RTEMS users
- * will find that the manual organization facilitates its use as a reference
- * document.
- */
-
-/**
- * @addtogroup ClassicAPI
- *
- * The facilities provided by RTEMS are built upon a foundation of very
- * powerful concepts. These concepts must be understood before the application
- * developer can efficiently utilize RTEMS. The purpose of this chapter is to
- * familiarize one with these concepts.
- *
- * @section ClassicRTEMSSecObjects Objects
- *
- * RTEMS provides directives which can be used to dynamically create, delete,
- * and manipulate a set of predefined object types. These types include tasks,
- * message queues, semaphores, memory regions, memory partitions, timers,
- * ports, and rate monotonic periods. The object-oriented nature of RTEMS
- * encourages the creation of modular applications built upon re-usable
- * "building block" routines.
- *
- * All objects are created on the local node as required by the application and
- * have an RTEMS assigned ID. All objects have a user-assigned name. Although a
- * relationship exists between an object's name and its RTEMS assigned ID, the
- * name and ID are not identical. Object names are completely arbitrary and
- * selected by the user as a meaningful "tag" which may commonly reflect the
- * object's use in the application. Conversely, object IDs are designed to
- * facilitate efficient object manipulation by the executive.
- *
- * @subsection ClassicRTEMSSubSecObjectNames Object Names
- *
- * An object name is an unsigned 32-bit entity associated with the
- * object by the user. The data type @ref rtems_name is used to store object names.
- *
- * Although not required by RTEMS, object names are often composed of four
- * ASCII characters which help identify that object. For example, a task which
- * causes a light to blink might be called "LITE". The rtems_build_name()
- * routine is provided to build an object name from four ASCII characters. The
- * following example illustrates this:
- *
- * @code
- * rtems_name my_name = rtems_build_name('L', 'I', 'T', 'E');
- * @endcode
- *
- * However, it is not required that the application use ASCII characters to
- * build object names. For example, if an application requires one-hundred
- * tasks, it would be difficult to assign meaningful ASCII names to each task.
- * A more convenient approach would be to name them the binary values one
- * through one-hundred, respectively.
- *
- * RTEMS provides a helper routine, rtems_object_get_name(), which can be used to
- * obtain the name of any RTEMS object using just its ID. This routine attempts
- * to convert the name into a printable string.
- *
- * @subsection ClassicRTEMSSubSecObjectIdentifiers Object Identifiers
- *
- * An object ID is a unique unsigned integer value which uniquely identifies an
- * object instance. Object IDs are passed as arguments to many directives in
- * RTEMS and RTEMS translates the ID to an internal object pointer. The
- * efficient manipulation of object IDs is critical to the performance of RTEMS
- * services. Because of this, there are two object ID formats defined. Each
- * target architecture specifies which format it will use. There is a 32-bit
- * format which is used for most of the supported architectures and supports
- * multiprocessor configurations. There is also a simpler 16-bit format which
- * is appropriate for smaller target architectures and does not support
- * multiprocessor configurations.
- *
- * @subsubsection ClassicRTEMSSubSec32BitObjectIdentifierFormat 32-Bit Object Identifier Format
- *
- * The 32-bit format for an object ID is composed of four parts: API,
- * object class, node, and index. The data type @ref rtems_id is used to store
- * object IDs.
- *
- * <table>
- * <tr>
- * <th>Bits</th>
- * <td>31</td><td>30</td><td>29</td><td>28</td><td>27</td><td>26</td><td>25</td><td>24</td>
- * <td>23</td><td>22</td><td>21</td><td>20</td><td>19</td><td>18</td><td>17</td><td>16</td>
- * <td>15</td><td>14</td><td>13</td><td>12</td><td>11</td><td>10</td><td>09</td><td>08</td>
- * <td>07</td><td>06</td><td>05</td><td>04</td><td>03</td><td>02</td><td>01</td><td>00</td>
- * </tr>
- * <tr>
- * <th>Contents</th>
- * <td colspan=5>Class</td><td colspan=3>API</td><td colspan=8>Node</td><td colspan=16>Object Index</td>
- * </tr>
- * </table>
- *
- * The most significant five bits are the object class. The next three bits
- * indicate the API to which the object class belongs. The next eight bits
- * (16 .. 23) are the number of the node on which this object was created. The
- * node number is always one (1) in a single processor system. The least
- * significant 16-bits form an identifier within a particular object type.
- * This identifier, called the object index, ranges in value from one to the
- * maximum number of objects configured for this object type.
- *
- * @subsubsection ClassicRTEMSSubSec16BitObjectIdentifierFormat 16-Bit Object Identifier Format
- *
- * The 16-bit format for an object ID is composed of three parts: API, object
- * class, and index. The data type @ref rtems_id is used to store object IDs.
- *
- * <table>
- * <tr>
- * <th>Bits</th>
- * <td>15</td><td>14</td><td>13</td><td>12</td><td>11</td><td>10</td><td>09</td><td>08</td>
- * <td>07</td><td>06</td><td>05</td><td>04</td><td>03</td><td>02</td><td>01</td><td>00</td>
- * </tr>
- * <tr>
- * <th>Contents</th>
- * <td colspan=5>Class</td><td colspan=3>API</td><td colspan=8>Object Index</td>
- * </tr>
- * </table>
- *
- * The 16-bit format is designed to be as similar as possible to the 32-bit
- * format. The differences are limited to the eliminatation of the node field
- * and reduction of the index field from 16-bits to 8-bits. Thus the 16-bit
- * format only supports up to 255 object instances per API/Class combination
- * and single processor systems. As this format is typically utilized by 16-bit
- * processors with limited address space, this is more than enough object
- * instances.
- *
- * @subsection ClassicRTEMSSubSecObjectIdentiferDescription Object Identifer Description
- *
- * The components of an object ID make it possible to quickly locate any object
- * in even the most complicated multiprocessor system. Object ID's are
- * associated with an object by RTEMS when the object is created and the
- * corresponding ID is returned by the appropriate object create directive. The
- * object ID is required as input to all directives involving objects, except
- * those which create an object or obtain the ID of an object.
- *
- * The object identification directives can be used to dynamically obtain a
- * particular object's ID given its name. This mapping is accomplished by
- * searching the name table associated with this object type. If the name is
- * non-unique, then the ID associated with the first occurrence of the name
- * will be returned to the application. Since object IDs are returned when the
- * object is created, the object identification directives are not necessary in
- * a properly designed single processor application.
- *
- * In addition, services are provided to portably examine the subcomponents of
- * an RTEMS ID. These services are described in detail later in this manual but
- * are prototyped as follows:
- *
- * - rtems_object_id_get_api()
- * - rtems_object_id_get_class()
- * - rtems_object_id_get_node()
- * - rtems_object_id_get_index()
- *
- * An object control block is a data structure defined by RTEMS which contains
- * the information necessary to manage a particular object type. For efficiency
- * reasons, the format of each object type's control block is different.
- * However, many of the fields are similar in function. The number of each type
- * of control block is application dependent and determined by the values
- * specified in the user's Configuration Table. An object control block is
- * allocated at object create time and freed when the object is deleted. With
- * the exception of user extension routines, object control blocks are not
- * directly manipulated by user applications.
- *
- * @section ClassicRTEMSSecComSync Communication and Synchronization
- *
- * In real-time multitasking applications, the ability for cooperating
- * execution threads to communicate and synchronize with each other is
- * imperative. A real-time executive should provide an application with the
- * following capabilities
- *
- * - data transfer between cooperating tasks,
- * - data transfer between tasks and ISRs,
- * - synchronization of cooperating tasks, and
- * - synchronization of tasks and ISRs.
- *
- * Most RTEMS managers can be used to provide some form of communication and/or
- * synchronization. However, managers dedicated specifically to communication
- * and synchronization provide well established mechanisms which directly map
- * to the application's varying needs. This level of flexibility allows the
- * application designer to match the features of a particular manager with the
- * complexity of communication and synchronization required. The following
- * managers were specifically designed for communication and synchronization:
- *
- * - @ref ClassicSem
- * - @ref ClassicMessageQueue
- * - @ref ClassicEvent
- * - @ref ClassicSignal
- *
- * The semaphore manager supports mutual exclusion involving the
- * synchronization of access to one or more shared user resources. Binary
- * semaphores may utilize the optional priority inheritance algorithm to avoid
- * the problem of priority inversion. The message manager supports both
- * communication and synchronization, while the event manager primarily
- * provides a high performance synchronization mechanism. The signal manager
- * supports only asynchronous communication and is typically used for exception
- * handling.
- *
- * @section ClassicRTEMSSecTime Time
- *
- * The development of responsive real-time applications requires an
- * understanding of how RTEMS maintains and supports time-related operations.
- * The basic unit of time in RTEMS is known as a tick. The frequency of clock
- * ticks is completely application dependent and determines the granularity and
- * accuracy of all interval and calendar time operations.
- *
- * By tracking time in units of ticks, RTEMS is capable of supporting interval
- * timing functions such as task delays, timeouts, timeslicing, the delayed
- * execution of timer service routines, and the rate monotonic scheduling of
- * tasks. An interval is defined as a number of ticks relative to the current
- * time. For example, when a task delays for an interval of ten ticks, it is
- * implied that the task will not execute until ten clock ticks have occurred.
- * All intervals are specified using data type @ref rtems_interval.
- *
- * A characteristic of interval timing is that the actual interval period may
- * be a fraction of a tick less than the interval requested. This occurs
- * because the time at which the delay timer is set up occurs at some time
- * between two clock ticks. Therefore, the first countdown tick occurs in less
- * than the complete time interval for a tick. This can be a problem if the
- * clock granularity is large.
- *
- * The rate monotonic scheduling algorithm is a hard real-time scheduling
- * methodology. This methodology provides rules which allows one to guarantee
- * that a set of independent periodic tasks will always meet their deadlines --
- * even under transient overload conditions. The rate monotonic manager
- * provides directives built upon the Clock Manager's interval timer support
- * routines.
- *
- * Interval timing is not sufficient for the many applications which require
- * that time be kept in wall time or true calendar form. Consequently, RTEMS
- * maintains the current date and time. This allows selected time operations to
- * be scheduled at an actual calendar date and time. For example, a task could
- * request to delay until midnight on New Year's Eve before lowering the ball
- * at Times Square. The data type @ref rtems_time_of_day is used to specify
- * calendar time in RTEMS services. See Clock Manager Time and Date Data
- * Structures.
- *
- * @todo Link to Clock Manager Time and Date Data Structures
- *
- * Obviously, the directives which use intervals or wall time cannot operate
- * without some external mechanism which provides a periodic clock tick. This
- * clock tick is typically provided by a real time clock or counter/timer
- * device.
- *
- * @section ClassicRTEMSSecMemoryManagement Memory Management
- *
- * RTEMS memory management facilities can be grouped into two classes: dynamic
- * memory allocation and address translation. Dynamic memory allocation is
- * required by applications whose memory requirements vary through the
- * application's course of execution. Address translation is needed by
- * applications which share memory with another CPU or an intelligent
- * Input/Output processor. The following RTEMS managers provide facilities to
- * manage memory:
- *
- * - @ref ClassicRegion
- * - @ref ClassicPart
- * - @ref ClassicDPMEM
- *
- * RTEMS memory management features allow an application to create simple
- * memory pools of fixed size buffers and/or more complex memory pools of
- * variable size segments. The partition manager provides directives to manage
- * and maintain pools of fixed size entities such as resource control blocks.
- * Alternatively, the region manager provides a more general purpose memory
- * allocation scheme that supports variable size blocks of memory which are
- * dynamically obtained and freed by the application. The dual-ported memory
- * manager provides executive support for address translation between internal
- * and external dual-ported RAM address space.
- */
-
-/**
- * @addtogroup ClassicTasks
- *
- * @section ClassicTasksSecTaskDefinition Task Definition
- *
- * Many definitions of a task have been proposed in computer literature.
- * Unfortunately, none of these definitions encompasses all facets of the
- * concept in a manner which is operating system independent. Several of the
- * more common definitions are provided to enable each user to select a
- * definition which best matches their own experience and understanding of the
- * task concept:
- *
- * - a "dispatchable" unit.
- * - an entity to which the processor is allocated.
- * - an atomic unit of a real-time, multiprocessor system.
- * - single threads of execution which concurrently compete for resources.
- * - a sequence of closely related computations which can execute concurrently
- * with other computational sequences.
- *
- * From RTEMS' perspective, a task is the smallest thread of execution which
- * can compete on its own for system resources. A task is manifested by the
- * existence of a task control block (TCB).
- *
- * @section ClassicTasksSecTaskControlBlock Task Control Block
- *
- * The Task Control Block (TCB) is an RTEMS defined data structure which
- * contains all the information that is pertinent to the execution of a task.
- * During system initialization, RTEMS reserves a TCB for each task configured.
- * A TCB is allocated upon creation of the task and is returned to the TCB free
- * list upon deletion of the task.
- *
- * The TCB's elements are modified as a result of system calls made by the
- * application in response to external and internal stimuli. TCBs are the only
- * RTEMS internal data structure that can be accessed by an application via
- * user extension routines. The TCB contains a task's name, ID, current
- * priority, current and starting states, execution mode, TCB user extension
- * pointer, scheduling control structures, as well as data required by a
- * blocked task.
- *
- * A task's context is stored in the TCB when a task switch occurs. When the
- * task regains control of the processor, its context is restored from the TCB.
- * When a task is restarted, the initial state of the task is restored from the
- * starting context area in the task's TCB.
- *
- * @section ClassicTasksSecTaskStates Task States
- *
- * A task may exist in one of the following five states:
- *
- * - executing - Currently scheduled to the CPU
- * - ready - May be scheduled to the CPU
- * - blocked - Unable to be scheduled to the CPU
- * - dormant - Created task that is not started
- * - non-existent - Uncreated or deleted task
- *
- * An active task may occupy the executing, ready, blocked or dormant state,
- * otherwise the task is considered non-existent. One or more tasks may be
- * active in the system simultaneously. Multiple tasks communicate,
- * synchronize, and compete for system resources with each other via system
- * calls. The multiple tasks appear to execute in parallel, but actually each
- * is dispatched to the CPU for periods of time determined by the RTEMS
- * scheduling algorithm. The scheduling of a task is based on its current state
- * and priority.
- *
- * @section ClassicTasksSecTaskPriority Task Priority
- *
- * A task's priority determines its importance in relation to the other tasks
- * executing on the same processor. RTEMS supports 255 levels of priority
- * ranging from 1 to 255. The data type rtems_task_priority() is used to store
- * task priorities.
- *
- * Tasks of numerically smaller priority values are more important tasks than
- * tasks of numerically larger priority values. For example, a task at priority
- * level 5 is of higher privilege than a task at priority level 10. There is no
- * limit to the number of tasks assigned to the same priority.
- *
- * Each task has a priority associated with it at all times. The initial value
- * of this priority is assigned at task creation time. The priority of a task
- * may be changed at any subsequent time.
- *
- * Priorities are used by the scheduler to determine which ready task will be
- * allowed to execute. In general, the higher the logical priority of a task,
- * the more likely it is to receive processor execution time.
- *
- * @section ClassicTasksSecTaskMode Task Mode
- *
- * A task's execution mode is a combination of the following four components:
- *
- * - preemption
- * - ASR processing
- * - timeslicing
- * - interrupt level
- *
- * It is used to modify RTEMS' scheduling process and to alter the execution
- * environment of the task. The data type rtems_task_mode() is used to manage
- * the task execution mode.
- *
- * The preemption component allows a task to determine when control of the
- * processor is relinquished. If preemption is disabled (@c
- * RTEMS_NO_PREEMPT), the task will retain control of the
- * processor as long as it is in the executing state -- even if a higher
- * priority task is made ready. If preemption is enabled (@c RTEMS_PREEMPT)
- * and a higher priority task is made ready, then the processor will be
- * taken away from the current task immediately and given to the higher
- * priority task.
- *
- * The timeslicing component is used by the RTEMS scheduler to determine how
- * the processor is allocated to tasks of equal priority. If timeslicing is
- * enabled (@c RTEMS_TIMESLICE), then RTEMS will limit the amount of time the
- * task can execute before the processor is allocated to another ready task of
- * equal priority. The length of the timeslice is application dependent and
- * specified in the Configuration Table. If timeslicing is disabled (@c
- * RTEMS_NO_TIMESLICE), then the task will be allowed to
- * execute until a task of higher priority is made ready. If @c
- * RTEMS_NO_PREEMPT is selected, then the timeslicing component is ignored by
- * the scheduler.
- *
- * The asynchronous signal processing component is used to determine when
- * received signals are to be processed by the task. If signal processing is
- * enabled (@c RTEMS_ASR), then signals sent to the task will be processed
- * the next time the task executes. If signal processing is disabled (@c
- * RTEMS_NO_ASR), then all signals received by the task will
- * remain posted until signal processing is enabled. This component affects
- * only tasks which have established a routine to process asynchronous signals.
- *
- * The interrupt level component is used to determine which interrupts will be
- * enabled when the task is executing. @c RTEMS_INTERRUPT_LEVEL(n) specifies
- * that the task will execute at interrupt level n.
- *
- * - @ref RTEMS_PREEMPT - enable preemption (default)
- * - @ref RTEMS_NO_PREEMPT - disable preemption
- * - @ref RTEMS_NO_TIMESLICE - disable timeslicing (default)
- * - @ref RTEMS_TIMESLICE - enable timeslicing
- * - @ref RTEMS_ASR - enable ASR processing (default)
- * - @ref RTEMS_NO_ASR - disable ASR processing
- * - @ref RTEMS_INTERRUPT_LEVEL(0) - enable all interrupts (default)
- * - @ref RTEMS_INTERRUPT_LEVEL(n) - execute at interrupt level n
- *
- * The set of default modes may be selected by specifying the @ref
- * RTEMS_DEFAULT_MODES constant.
- *
- * @section ClassicTasksSecAccessingTaskArguments Accessing Task Arguments
- *
- * All RTEMS tasks are invoked with a single argument which is specified when
- * they are started or restarted. The argument is commonly used to communicate
- * startup information to the task. The simplest manner in which to define a
- * task which accesses it argument is:
- *
- * @code
- * rtems_task user_task(
- * rtems_task_argument argument
- * );
- * @endcode
- *
- * Application tasks requiring more information may view this single argument
- * as an index into an array of parameter blocks.
- *
- * @section ClassicTasksSecFloatingPointConsiderations Floating Point Considerations
- *
- * Creating a task with the @ref RTEMS_FLOATING_POINT attribute flag results in
- * additional memory being allocated for the TCB to store the state of the
- * numeric coprocessor during task switches. This additional memory is NOT
- * allocated for @ref RTEMS_NO_FLOATING_POINT tasks. Saving and restoring the
- * context of a @c RTEMS_FLOATING_POINT task takes longer than that of a @c
- * RTEMS_NO_FLOATING_POINT task because of the relatively large amount of time
- * required for the numeric coprocessor to save or restore its computational
- * state.
- *
- * Since RTEMS was designed specifically for embedded military applications
- * which are floating point intensive, the executive is optimized to avoid
- * unnecessarily saving and restoring the state of the numeric coprocessor. The
- * state of the numeric coprocessor is only saved when a @c
- * RTEMS_FLOATING_POINT task is dispatched and that task was not the last task
- * to utilize the coprocessor. In a system with only one @c
- * RTEMS_FLOATING_POINT task, the state of the numeric coprocessor will never
- * be saved or restored.
- *
- * Although the overhead imposed by @c RTEMS_FLOATING_POINT tasks is minimal,
- * some applications may wish to completely avoid the overhead associated with
- * @c RTEMS_FLOATING_POINT tasks and still utilize a numeric coprocessor. By
- * preventing a task from being preempted while performing a sequence of
- * floating point operations, a @c RTEMS_NO_FLOATING_POINT task can utilize
- * the numeric coprocessor without incurring the overhead of a @c
- * RTEMS_FLOATING_POINT context switch. This approach also avoids the
- * allocation of a floating point context area. However, if this approach is
- * taken by the application designer, NO tasks should be created as @c
- * RTEMS_FLOATING_POINT tasks. Otherwise, the floating point context will not
- * be correctly maintained because RTEMS assumes that the state of the numeric
- * coprocessor will not be altered by @c RTEMS_NO_FLOATING_POINT tasks.
- *
- * If the supported processor type does not have hardware floating capabilities
- * or a standard numeric coprocessor, RTEMS will not provide built-in support
- * for hardware floating point on that processor. In this case, all tasks are
- * considered @c RTEMS_NO_FLOATING_POINT whether created as @c
- * RTEMS_FLOATING_POINT or @c RTEMS_NO_FLOATING_POINT tasks. A floating point
- * emulation software library must be utilized for floating point operations.
- *
- * On some processors, it is possible to disable the floating point unit
- * dynamically. If this capability is supported by the target processor, then
- * RTEMS will utilize this capability to enable the floating point unit only
- * for tasks which are created with the @c RTEMS_FLOATING_POINT attribute.
- * The consequence of a @c RTEMS_NO_FLOATING_POINT task attempting to access
- * the floating point unit is CPU dependent but will generally result in an
- * exception condition.
- *
- * @section ClassicTasksSecPerTaskVariables Per Task Variables
- *
- * Per task variables are no longer available. In particular the
- * rtems_task_variable_add(), rtems_task_variable_get() and
- * rtems_task_variable_delete() functions are neither declared nor defined
- * anymore. Use thread local storage or POSIX Keys instead.
- *
- * @section ClassicTasksSecBuildingTaskAttributeSet Building a Task Attribute Set
- *
- * In general, an attribute set is built by a bitwise OR of the desired
- * components. The set of valid task attribute components is listed below:
- *
- * - @ref RTEMS_NO_FLOATING_POINT - does not use coprocessor (default)
- * - @ref RTEMS_FLOATING_POINT - uses numeric coprocessor
- * - @ref RTEMS_LOCAL - local task (default)
- * - @ref RTEMS_GLOBAL - global task
- *
- * Attribute values are specifically designed to be mutually exclusive,
- * therefore bitwise OR and addition operations are equivalent as long as each
- * attribute appears exactly once in the component list. A component listed as
- * a default is not required to appear in the component list, although it is a
- * good programming practice to specify default components. If all defaults are
- * desired, then @ref RTEMS_DEFAULT_ATTRIBUTES should be used. This example
- * demonstrates the attribute_set parameter needed to create a local task which
- * utilizes the numeric coprocessor. The attribute_set parameter could be @c
- * RTEMS_FLOATING_POINT or @c RTEMS_LOCAL | @c RTEMS_FLOATING_POINT. The
- * attribute_set parameter can be set to @c RTEMS_FLOATING_POINT because @c
- * RTEMS_LOCAL is the default for all created tasks. If the task were global
- * and used the numeric coprocessor, then the attribute_set parameter would be
- * @c RTEMS_GLOBAL | @c RTEMS_FLOATING_POINT.
- *
- * @section ClassicTasksSecBuildingModeAndMask Building a Mode and Mask
- *
- * In general, a mode and its corresponding mask is built by a bitwise OR of
- * the desired components. The set of valid mode constants and each mode's
- * corresponding mask constant is listed below:
- *
- * <table>
- * <tr><th>Mode Constant</th><th>Mask Constant</th><th>Description</th></tr>
- * <tr><td>@ref RTEMS_PREEMPT</td><td>@ref RTEMS_PREEMPT_MASK</td><td>enables preemption</td></tr>
- * <tr><td>@ref RTEMS_NO_PREEMPT</td><td>@ref RTEMS_PREEMPT_MASK</td><td>disables preemption</td></tr>
- * <tr><td>@ref RTEMS_NO_TIMESLICE</td><td>@ref RTEMS_TIMESLICE_MASK</td><td>disables timeslicing</td></tr>
- * <tr><td>@ref RTEMS_TIMESLICE</td><td>@ref RTEMS_TIMESLICE_MASK</td><td>enables timeslicing</td></tr>
- * <tr><td>@ref RTEMS_ASR</td><td>@ref RTEMS_ASR_MASK</td><td>enables ASR processing</td></tr>
- * <tr><td>@ref RTEMS_NO_ASR</td><td>@ref RTEMS_ASR_MASK</td><td>disables ASR processing</td></tr>
- * <tr><td>@ref RTEMS_INTERRUPT_LEVEL(0)</td><td>@ref RTEMS_INTERRUPT_MASK</td><td>enables all interrupts</td></tr>
- * <tr><td>@ref RTEMS_INTERRUPT_LEVEL(n)</td><td>@ref RTEMS_INTERRUPT_MASK</td><td>sets interrupts level n</td></tr>
- * </table>
- *
- * Mode values are specifically designed to be mutually exclusive, therefore
- * bitwise OR and addition operations are equivalent as long as each mode
- * appears exactly once in the component list. A mode component listed as a
- * default is not required to appear in the mode component list, although it is
- * a good programming practice to specify default components. If all defaults
- * are desired, the mode @ref RTEMS_DEFAULT_MODES and the mask @ref
- * RTEMS_ALL_MODE_MASKS should be used.
- *
- * The following example demonstrates the mode and mask parameters used with
- * the rtems_task_mode() directive to place a task at interrupt level 3 and
- * make it non-preemptible. The mode should be set to @c
- * RTEMS_INTERRUPT_LEVEL(3) | @c RTEMS_NO_PREEMPT to indicate the desired
- * preemption mode and interrupt level, while the mask parameter should be set
- * to @c RTEMS_INTERRUPT_MASK | @c RTEMS_PREEMPT_MASK to indicate that
- * the calling task's interrupt level and preemption mode are being altered.
- */
-
- /**
- * @defgroup LocalPackages Local Packages
- *
- * @brief Local packages.
- */
diff --git a/cpukit/rtems/preinstall.am b/cpukit/rtems/preinstall.am
deleted file mode 100644
index 35e78db889..0000000000
--- a/cpukit/rtems/preinstall.am
+++ /dev/null
@@ -1,222 +0,0 @@
-## Automatically generated by ampolish3 - Do not edit
-
-if AMPOLISH3
-$(srcdir)/preinstall.am: Makefile.am
- $(AMPOLISH3) $(srcdir)/Makefile.am > $(srcdir)/preinstall.am
-endif
-
-PREINSTALL_DIRS =
-DISTCLEANFILES = $(PREINSTALL_DIRS)
-
-all-am: $(PREINSTALL_FILES)
-
-PREINSTALL_FILES =
-CLEANFILES = $(PREINSTALL_FILES)
-
-$(PROJECT_INCLUDE)/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_INCLUDE)
- @: > $(PROJECT_INCLUDE)/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/$(dirstamp)
-
-$(PROJECT_INCLUDE)/rtems.h: include/rtems.h $(PROJECT_INCLUDE)/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp):
- @$(MKDIR_P) $(PROJECT_INCLUDE)/rtems/rtems
- @: > $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
-PREINSTALL_DIRS += $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
-
-$(PROJECT_INCLUDE)/rtems/rtems/asr.h: include/rtems/rtems/asr.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/asr.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/asr.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/asrimpl.h: include/rtems/rtems/asrimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/asrimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/asrimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/attr.h: include/rtems/rtems/attr.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/attr.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/attr.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/attrimpl.h: include/rtems/rtems/attrimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/attrimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/attrimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/barrier.h: include/rtems/rtems/barrier.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/barrier.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/barrier.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/barrierimpl.h: include/rtems/rtems/barrierimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/barrierimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/barrierimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/cache.h: include/rtems/rtems/cache.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/cache.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/cache.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/clock.h: include/rtems/rtems/clock.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/clock.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/clock.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/config.h: include/rtems/rtems/config.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/config.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/config.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/dpmem.h: include/rtems/rtems/dpmem.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/dpmem.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/dpmem.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/dpmemimpl.h: include/rtems/rtems/dpmemimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/dpmemimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/dpmemimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/event.h: include/rtems/rtems/event.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/event.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/event.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/eventimpl.h: include/rtems/rtems/eventimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/eventimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/eventimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/intr.h: include/rtems/rtems/intr.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/intr.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/intr.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/message.h: include/rtems/rtems/message.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/message.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/message.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/messageimpl.h: include/rtems/rtems/messageimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/messageimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/messageimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/modes.h: include/rtems/rtems/modes.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/modes.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/modes.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/modesimpl.h: include/rtems/rtems/modesimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/modesimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/modesimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/object.h: include/rtems/rtems/object.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/object.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/object.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/options.h: include/rtems/rtems/options.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/options.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/options.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/optionsimpl.h: include/rtems/rtems/optionsimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/optionsimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/optionsimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/part.h: include/rtems/rtems/part.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/part.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/part.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/partimpl.h: include/rtems/rtems/partimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/partimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/partimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/ratemon.h: include/rtems/rtems/ratemon.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/ratemon.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/ratemon.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/ratemonimpl.h: include/rtems/rtems/ratemonimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/ratemonimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/ratemonimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/region.h: include/rtems/rtems/region.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/region.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/region.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/regionimpl.h: include/rtems/rtems/regionimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/regionimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/regionimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/sem.h: include/rtems/rtems/sem.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/sem.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/sem.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/semimpl.h: include/rtems/rtems/semimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/semimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/semimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/signal.h: include/rtems/rtems/signal.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/signal.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/signal.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/signalimpl.h: include/rtems/rtems/signalimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/signalimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/signalimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/smp.h: include/rtems/rtems/smp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/smp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/smp.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/status.h: include/rtems/rtems/status.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/status.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/status.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/statusimpl.h: include/rtems/rtems/statusimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/statusimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/statusimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/support.h: include/rtems/rtems/support.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/support.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/support.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/tasks.h: include/rtems/rtems/tasks.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/tasks.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/tasks.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/tasksimpl.h: include/rtems/rtems/tasksimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/tasksimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/tasksimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/timer.h: include/rtems/rtems/timer.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/timer.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/timer.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/timerimpl.h: include/rtems/rtems/timerimpl.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/timerimpl.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/timerimpl.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/types.h: include/rtems/rtems/types.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/types.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/types.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/mainpage.h: mainpage.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/mainpage.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/mainpage.h
-
-if HAS_MP
-$(PROJECT_INCLUDE)/rtems/rtems/eventmp.h: include/rtems/rtems/eventmp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/eventmp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/eventmp.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/mp.h: include/rtems/rtems/mp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/mp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/mp.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/msgmp.h: include/rtems/rtems/msgmp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/msgmp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/msgmp.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/partmp.h: include/rtems/rtems/partmp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/partmp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/partmp.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/semmp.h: include/rtems/rtems/semmp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/semmp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/semmp.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/signalmp.h: include/rtems/rtems/signalmp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/signalmp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/signalmp.h
-
-$(PROJECT_INCLUDE)/rtems/rtems/taskmp.h: include/rtems/rtems/taskmp.h $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp)
- $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
-PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h
-endif