From 0b32bb8042c908bcf376f763de8ac0401dc17288 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Fri, 19 Jul 2013 10:42:39 +0200 Subject: rtems: Create barrier implementation header Move implementation specific parts of barrier.h and barrier.inl into new header file barrierimpl.h. The barrier.h contains now only the application visible API. --- cpukit/libcsupport/src/resource_snapshot.c | 1 + cpukit/libfs/src/pipe/fifo.c | 1 + cpukit/rtems/Makefile.am | 2 +- cpukit/rtems/include/rtems/rtems/barrier.h | 68 ++---------- cpukit/rtems/include/rtems/rtems/barrierimpl.h | 142 +++++++++++++++++++++++++ cpukit/rtems/inline/rtems/rtems/barrier.inl | 93 ---------------- cpukit/rtems/preinstall.am | 8 +- cpukit/rtems/src/barrier.c | 2 +- cpukit/rtems/src/barriercreate.c | 2 +- cpukit/rtems/src/barrierdata.c | 2 +- cpukit/rtems/src/barrierdelete.c | 2 +- cpukit/rtems/src/barrierident.c | 2 +- cpukit/rtems/src/barrierrelease.c | 2 +- cpukit/rtems/src/barriertranslatereturncode.c | 2 +- cpukit/rtems/src/barrierwait.c | 2 +- cpukit/sapi/src/rtemsapi.c | 2 +- 16 files changed, 169 insertions(+), 164 deletions(-) create mode 100644 cpukit/rtems/include/rtems/rtems/barrierimpl.h delete mode 100644 cpukit/rtems/inline/rtems/rtems/barrier.inl diff --git a/cpukit/libcsupport/src/resource_snapshot.c b/cpukit/libcsupport/src/resource_snapshot.c index 4fc3f15e58..cb3d6d7459 100644 --- a/cpukit/libcsupport/src/resource_snapshot.c +++ b/cpukit/libcsupport/src/resource_snapshot.c @@ -25,6 +25,7 @@ #include #include +#include #include #include diff --git a/cpukit/libfs/src/pipe/fifo.c b/cpukit/libfs/src/pipe/fifo.c index b8eed9b449..635e7650b5 100644 --- a/cpukit/libfs/src/pipe/fifo.c +++ b/cpukit/libfs/src/pipe/fifo.c @@ -27,6 +27,7 @@ #include #include +#include #include "pipe.h" diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am index 04963b55ce..5d39b4843d 100644 --- a/cpukit/rtems/Makefile.am +++ b/cpukit/rtems/Makefile.am @@ -17,6 +17,7 @@ include_rtems_rtems_HEADERS = include_rtems_rtems_HEADERS += include/rtems/rtems/asr.h include_rtems_rtems_HEADERS += include/rtems/rtems/attr.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 @@ -61,7 +62,6 @@ endif include_rtems_rtems_HEADERS += inline/rtems/rtems/asr.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/attr.inl -include_rtems_rtems_HEADERS += inline/rtems/rtems/barrier.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/dpmem.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/event.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/eventset.inl diff --git a/cpukit/rtems/include/rtems/rtems/barrier.h b/cpukit/rtems/include/rtems/rtems/barrier.h index b27f81b378..e362bb0db3 100644 --- a/cpukit/rtems/include/rtems/rtems/barrier.h +++ b/cpukit/rtems/include/rtems/rtems/barrier.h @@ -29,6 +29,16 @@ #ifndef _RTEMS_RTEMS_BARRIER_H #define _RTEMS_RTEMS_BARRIER_H +#include +#include +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + /** * @defgroup ClassicBarrier Barriers * @@ -39,31 +49,6 @@ */ /**@{*/ -/** - * @brief Instantiate Barrier Data - * - * Barrier Manager -- Instantiate Data - * - * This constant is defined to extern most of the time when using - * this header file. However by defining it to nothing, the data - * declared in this header file can be instantiated. This is done - * in a single per manager file. - */ -#ifndef RTEMS_BARRIER_EXTERN -#define RTEMS_BARRIER_EXTERN extern -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include -#include -#include - /** * This type defines the control block used to manage each barrier. */ @@ -76,19 +61,6 @@ typedef struct { CORE_barrier_Control Barrier; } Barrier_Control; -/** - * The following defines the information control block used to manage - * this class of objects. - */ -RTEMS_BARRIER_EXTERN Objects_Information _Barrier_Information; - -/** - * @brief _Barrier_Manager_initialization - * - * This routine performs the initialization necessary for this manager. - */ -void _Barrier_Manager_initialization(void); - /** * @brief RTEMS Create Barrier * @@ -191,29 +163,11 @@ rtems_status_code rtems_barrier_release( uint32_t *released ); -/** - * @brief Translate SuperCore Barrier Status Code to RTEMS Status Code - * - * This function returns a RTEMS status code based on the barrier - * status code specified. - * - * @param[in] the_status is the SuperCore Barrier status to translate. - * - * @retval a status code indicating success or the reason for failure. - */ -rtems_status_code _Barrier_Translate_core_barrier_return_code ( - CORE_barrier_Status the_status -); - -#ifndef __RTEMS_APPLICATION__ -#include -#endif +/**@}*/ #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 new file mode 100644 index 0000000000..9c630fb2eb --- /dev/null +++ b/cpukit/rtems/include/rtems/rtems/barrierimpl.h @@ -0,0 +1,142 @@ +/** + * @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.com/license/LICENSE. + */ + +#ifndef _RTEMS_RTEMS_BARRIERIMPL_H +#define _RTEMS_RTEMS_BARRIERIMPL_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @defgroup ClassicBarrierImpl Classic Barrier Implementation + * + * @ingroup ClassicBarrier + * + * @{ + */ + +/** + * @brief Instantiate Barrier Data + * + * Barrier Manager -- Instantiate Data + * + * This constant is defined to extern most of the time when using + * this header file. However by defining it to nothing, the data + * declared in this header file can be instantiated. This is done + * in a single per manager file. + */ +#ifndef RTEMS_BARRIER_EXTERN +#define RTEMS_BARRIER_EXTERN extern +#endif + +/** + * The following defines the information control block used to manage + * this class of objects. + */ +RTEMS_BARRIER_EXTERN Objects_Information _Barrier_Information; + +/** + * @brief _Barrier_Manager_initialization + * + * This routine performs the initialization necessary for this manager. + */ +void _Barrier_Manager_initialization(void); + +/** + * @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 +) +{ + _Objects_Free( &_Barrier_Information, &the_barrier->Object ); +} + +/** + * @brief _Barrier_Get + * + * This function maps barrier IDs to barrier control blocks. + * If ID corresponds to a local barrier, then it returns + * the_barrier control pointer which maps to ID and location + * is set to OBJECTS_LOCAL. if the barrier ID is global and + * resides on a remote node, then location is set to OBJECTS_REMOTE, + * and the_barrier is undefined. Otherwise, location is set + * to OBJECTS_ERROR and the_barrier is undefined. + */ +RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Get ( + Objects_Id id, + Objects_Locations *location +) +{ + return (Barrier_Control *) + _Objects_Get( &_Barrier_Information, id, location ); +} + +/** + * @brief _Barrier_Is_null + * + * This function returns TRUE if the_barrier is NULL and FALSE otherwise. + */ +RTEMS_INLINE_ROUTINE bool _Barrier_Is_null ( + Barrier_Control *the_barrier +) +{ + return ( the_barrier == NULL ); +} +/** + * @brief Translate SuperCore Barrier Status Code to RTEMS Status Code + * + * This function returns a RTEMS status code based on the barrier + * status code specified. + * + * @param[in] the_status is the SuperCore Barrier status to translate. + * + * @retval a status code indicating success or the reason for failure. + */ +rtems_status_code _Barrier_Translate_core_barrier_return_code ( + CORE_barrier_Status the_status +); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/rtems/inline/rtems/rtems/barrier.inl b/cpukit/rtems/inline/rtems/rtems/barrier.inl deleted file mode 100644 index 0d0ee4cf88..0000000000 --- a/cpukit/rtems/inline/rtems/rtems/barrier.inl +++ /dev/null @@ -1,93 +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.com/license/LICENSE. - */ - -#ifndef _RTEMS_RTEMS_BARRIER_H -# error "Never use directly; include instead." -#endif - -#ifndef _RTEMS_RTEMS_BARRIER_INL -#define _RTEMS_RTEMS_BARRIER_INL - -/** - * @addtogroup ClassicBarrier - * @{ - */ - -/** - * @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 -) -{ - _Objects_Free( &_Barrier_Information, &the_barrier->Object ); -} - -/** - * @brief _Barrier_Get - * - * This function maps barrier IDs to barrier control blocks. - * If ID corresponds to a local barrier, then it returns - * the_barrier control pointer which maps to ID and location - * is set to OBJECTS_LOCAL. if the barrier ID is global and - * resides on a remote node, then location is set to OBJECTS_REMOTE, - * and the_barrier is undefined. Otherwise, location is set - * to OBJECTS_ERROR and the_barrier is undefined. - */ -RTEMS_INLINE_ROUTINE Barrier_Control *_Barrier_Get ( - Objects_Id id, - Objects_Locations *location -) -{ - return (Barrier_Control *) - _Objects_Get( &_Barrier_Information, id, location ); -} - -/** - * @brief _Barrier_Is_null - * - * This function returns TRUE if the_barrier is NULL and FALSE otherwise. - */ -RTEMS_INLINE_ROUTINE bool _Barrier_Is_null ( - Barrier_Control *the_barrier -) -{ - return ( the_barrier == NULL ); -} - -/**@}*/ - -#endif -/* end of include file */ diff --git a/cpukit/rtems/preinstall.am b/cpukit/rtems/preinstall.am index f10504be2b..18e3f4738f 100644 --- a/cpukit/rtems/preinstall.am +++ b/cpukit/rtems/preinstall.am @@ -39,6 +39,10 @@ $(PROJECT_INCLUDE)/rtems/rtems/barrier.h: include/rtems/rtems/barrier.h $(PROJEC $(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 @@ -189,10 +193,6 @@ $(PROJECT_INCLUDE)/rtems/rtems/attr.inl: inline/rtems/rtems/attr.inl $(PROJECT_I $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/attr.inl PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/attr.inl -$(PROJECT_INCLUDE)/rtems/rtems/barrier.inl: inline/rtems/rtems/barrier.inl $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp) - $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/barrier.inl -PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/barrier.inl - $(PROJECT_INCLUDE)/rtems/rtems/dpmem.inl: inline/rtems/rtems/dpmem.inl $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/dpmem.inl PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/dpmem.inl diff --git a/cpukit/rtems/src/barrier.c b/cpukit/rtems/src/barrier.c index 0cdd32005f..fc96703c59 100644 --- a/cpukit/rtems/src/barrier.c +++ b/cpukit/rtems/src/barrier.c @@ -30,7 +30,7 @@ #include #include #include -#include +#include #if defined(RTEMS_MULTIPROCESSING) #include #endif diff --git a/cpukit/rtems/src/barriercreate.c b/cpukit/rtems/src/barriercreate.c index b2450148d0..16721375cd 100644 --- a/cpukit/rtems/src/barriercreate.c +++ b/cpukit/rtems/src/barriercreate.c @@ -24,7 +24,7 @@ #include #include #include -#include +#include /* * rtems_barrier_create diff --git a/cpukit/rtems/src/barrierdata.c b/cpukit/rtems/src/barrierdata.c index 6481dbc3f7..32f095b685 100644 --- a/cpukit/rtems/src/barrierdata.c +++ b/cpukit/rtems/src/barrierdata.c @@ -22,5 +22,5 @@ #define RTEMS_BARRIER_EXTERN #include -#include +#include diff --git a/cpukit/rtems/src/barrierdelete.c b/cpukit/rtems/src/barrierdelete.c index db6f9288da..83ed480bfa 100644 --- a/cpukit/rtems/src/barrierdelete.c +++ b/cpukit/rtems/src/barrierdelete.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/cpukit/rtems/src/barrierident.c b/cpukit/rtems/src/barrierident.c index dc047f1d27..ce801f4f8c 100644 --- a/cpukit/rtems/src/barrierident.c +++ b/cpukit/rtems/src/barrierident.c @@ -23,7 +23,7 @@ #include #include #include -#include +#include rtems_status_code rtems_barrier_ident( rtems_name name, diff --git a/cpukit/rtems/src/barrierrelease.c b/cpukit/rtems/src/barrierrelease.c index 38aaa83cc3..1840ca981c 100644 --- a/cpukit/rtems/src/barrierrelease.c +++ b/cpukit/rtems/src/barrierrelease.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff --git a/cpukit/rtems/src/barriertranslatereturncode.c b/cpukit/rtems/src/barriertranslatereturncode.c index 424be88892..bfce0271e0 100644 --- a/cpukit/rtems/src/barriertranslatereturncode.c +++ b/cpukit/rtems/src/barriertranslatereturncode.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include rtems_status_code _Barrier_Translate_core_barrier_return_code_[] = { RTEMS_SUCCESSFUL, /* CORE_BARRIER_STATUS_SUCCESSFUL */ diff --git a/cpukit/rtems/src/barrierwait.c b/cpukit/rtems/src/barrierwait.c index aae06c8694..515f9352c7 100644 --- a/cpukit/rtems/src/barrierwait.c +++ b/cpukit/rtems/src/barrierwait.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include diff --git a/cpukit/sapi/src/rtemsapi.c b/cpukit/sapi/src/rtemsapi.c index bf5ac492fb..dcf6fc044d 100644 --- a/cpukit/sapi/src/rtemsapi.c +++ b/cpukit/sapi/src/rtemsapi.c @@ -26,7 +26,7 @@ #include #include -#include +#include #include #include #include -- cgit v1.2.3