From 739df1f58390e4f755807df0da99c6a38a334246 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Thu, 8 Nov 2018 10:45:44 +0100 Subject: rtems: Move internal structures to semdata.h Update #3598. --- cpukit/headers.am | 1 + cpukit/include/rtems/confdefs.h | 1 + cpukit/include/rtems/rtems/sem.h | 84 ++--------------------------- cpukit/include/rtems/rtems/semdata.h | 102 +++++++++++++++++++++++++++++++++++ cpukit/include/rtems/rtems/semimpl.h | 16 ++++-- cpukit/rtems/src/semcreate.c | 1 + 6 files changed, 121 insertions(+), 84 deletions(-) create mode 100644 cpukit/include/rtems/rtems/semdata.h diff --git a/cpukit/headers.am b/cpukit/headers.am index 95bc817773..02f45542d7 100644 --- a/cpukit/headers.am +++ b/cpukit/headers.am @@ -263,6 +263,7 @@ include_rtems_rtems_HEADERS += include/rtems/rtems/region.h include_rtems_rtems_HEADERS += include/rtems/rtems/regiondata.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/semdata.h include_rtems_rtems_HEADERS += include/rtems/rtems/semimpl.h include_rtems_rtems_HEADERS += include/rtems/rtems/semmp.h include_rtems_rtems_HEADERS += include/rtems/rtems/signal.h diff --git a/cpukit/include/rtems/confdefs.h b/cpukit/include/rtems/confdefs.h index 7b2b47ae00..0062d3934f 100644 --- a/cpukit/include/rtems/confdefs.h +++ b/cpukit/include/rtems/confdefs.h @@ -38,6 +38,7 @@ #include #include #include +#include #include #include #include diff --git a/cpukit/include/rtems/rtems/sem.h b/cpukit/include/rtems/rtems/sem.h index 41b0061979..8e83848465 100644 --- a/cpukit/include/rtems/rtems/sem.h +++ b/cpukit/include/rtems/rtems/sem.h @@ -3,22 +3,7 @@ * * @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 + * @brief Classic Semaphores Manager API */ /* @@ -33,15 +18,10 @@ #ifndef _RTEMS_RTEMS_SEM_H #define _RTEMS_RTEMS_SEM_H -#include +#include #include -#include #include -#include -#include -#include -#include -#include +#include #ifdef __cplusplus extern "C" { @@ -57,64 +37,6 @@ extern "C" { */ /**@{*/ -/** - * 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 * diff --git a/cpukit/include/rtems/rtems/semdata.h b/cpukit/include/rtems/rtems/semdata.h new file mode 100644 index 0000000000..04db07d6a0 --- /dev/null +++ b/cpukit/include/rtems/rtems/semdata.h @@ -0,0 +1,102 @@ +/** + * @file + * + * @ingroup ClassicSemImpl + * + * @brief Classic Semaphore Manager Data Structures + */ + +/* + * 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_SEMDATA_H +#define _RTEMS_RTEMS_SEMDATA_H + +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @addtogroup ClassicSemImpl + * + * @{ + */ + +/** + * 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; + +/** @} */ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/include/rtems/rtems/semimpl.h b/cpukit/include/rtems/rtems/semimpl.h index 6d0f156e5c..1028879f39 100644 --- a/cpukit/include/rtems/rtems/semimpl.h +++ b/cpukit/include/rtems/rtems/semimpl.h @@ -1,9 +1,9 @@ /** * @file * - * @ingroup ClassicSem + * @ingroup ClassicSemImpl * - * @brief Classic Semaphores Implementation + * @brief Classic Semaphore Manager Implementation */ /* COPYRIGHT (c) 1989-2008. @@ -17,7 +17,7 @@ #ifndef _RTEMS_RTEMS_SEMIMPL_H #define _RTEMS_RTEMS_SEMIMPL_H -#include +#include #include #include #include @@ -26,6 +26,14 @@ extern "C" { #endif +/** + * @defgroup ClassicSemImpl Semaphore Manager Implementation + * + * @ingroup ClassicSem + * + * @{ + */ + /** * @brief Classic semaphore variants. * @@ -108,6 +116,8 @@ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get( ); } +/** @} */ + #ifdef __cplusplus } #endif diff --git a/cpukit/rtems/src/semcreate.c b/cpukit/rtems/src/semcreate.c index 77ee3d366d..fd266f8cd5 100644 --- a/cpukit/rtems/src/semcreate.c +++ b/cpukit/rtems/src/semcreate.c @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include -- cgit v1.2.3