diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-17 13:52:00 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-07-18 09:58:56 +0200 |
commit | 2bbea657ae366f6b73dd6ca5db98af7ea3c29759 (patch) | |
tree | fcbee133028ad2e37bb6c15cdfc1b9f7eb25fdf4 /cpukit/rtems | |
parent | libtests/gxx01: Avoid random memory read/write (diff) | |
download | rtems-2bbea657ae366f6b73dd6ca5db98af7ea3c29759.tar.bz2 |
rtems: Create semaphore implementation header
Move implementation specific parts of sem.h and sem.inl into new header
file semimpl.h. The sem.h contains now only the application visible
API.
Diffstat (limited to 'cpukit/rtems')
-rw-r--r-- | cpukit/rtems/Makefile.am | 2 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/sem.h | 81 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/semimpl.h (renamed from cpukit/rtems/inline/rtems/rtems/sem.inl) | 80 | ||||
-rw-r--r-- | cpukit/rtems/include/rtems/rtems/semmp.h | 11 | ||||
-rw-r--r-- | cpukit/rtems/preinstall.am | 9 | ||||
-rw-r--r-- | cpukit/rtems/src/sem.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semcreate.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semdata.c | 3 | ||||
-rw-r--r-- | cpukit/rtems/src/semdelete.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semflush.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semident.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semmp.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semobtain.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semrelease.c | 2 | ||||
-rw-r--r-- | cpukit/rtems/src/semtranslatereturncode.c | 2 |
15 files changed, 97 insertions, 107 deletions
diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am index 31e2c3d4be..c61ca5a26b 100644 --- a/cpukit/rtems/Makefile.am +++ b/cpukit/rtems/Makefile.am @@ -33,6 +33,7 @@ include_rtems_rtems_HEADERS += include/rtems/rtems/ratemon.h include_rtems_rtems_HEADERS += include/rtems/rtems/region.h include_rtems_rtems_HEADERS += include/rtems/rtems/rtemsapi.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/smp.h include_rtems_rtems_HEADERS += include/rtems/rtems/status.h @@ -69,7 +70,6 @@ include_rtems_rtems_HEADERS += inline/rtems/rtems/options.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/part.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/ratemon.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/region.inl -include_rtems_rtems_HEADERS += inline/rtems/rtems/sem.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/status.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/support.inl include_rtems_rtems_HEADERS += inline/rtems/rtems/tasks.inl diff --git a/cpukit/rtems/include/rtems/rtems/sem.h b/cpukit/rtems/include/rtems/rtems/sem.h index 046c0f2de8..fbe5590cfd 100644 --- a/cpukit/rtems/include/rtems/rtems/sem.h +++ b/cpukit/rtems/include/rtems/rtems/sem.h @@ -1,11 +1,9 @@ /** - * @file rtems/rtems/sem.h + * @file * - * @brief Semaphore Manager + * @ingroup ClassicSem * - * @defgroup ClassicSem Semaphores - * - * @ingroup ClassicRTEMS + * @brief Classic Semaphores API * * This include file contains all the constants and structures associated * with the Semaphore Manager. This manager utilizes standard Dijkstra @@ -32,25 +30,6 @@ #ifndef _RTEMS_RTEMS_SEM_H #define _RTEMS_RTEMS_SEM_H -/** - * @brief Instantiate Semaphore Data - * - * Semaphore Manager -- Data Instantiation - * - * 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_SEM_EXTERN -#define RTEMS_SEM_EXTERN extern -#endif - -#ifdef __cplusplus -extern "C" { -#endif - #include <rtems/rtems/types.h> #include <rtems/rtems/options.h> #include <rtems/rtems/support.h> @@ -60,6 +39,10 @@ extern "C" { #include <rtems/score/object.h> #include <rtems/score/coresem.h> +#ifdef __cplusplus +extern "C" { +#endif + /** * @defgroup ClassicSem Semaphores * @@ -109,19 +92,6 @@ typedef struct { } Semaphore_Control; /** - * The following defines the information control block used to manage - * this class of objects. - */ -RTEMS_SEM_EXTERN Objects_Information _Semaphore_Information; - -/** - * @brief Semaphore Manager Initialization - * - * This routine performs the initialization necessary for this manager. - */ -void _Semaphore_Manager_initialization(void); - -/** * @brief rtems_semaphore_create * * This routine implements the rtems_semaphore_create directive. The @@ -238,46 +208,11 @@ rtems_status_code rtems_semaphore_flush( rtems_id id ); -/** - * @brief Semaphore Translate Core Mutex Return Code - * - * This function returns a RTEMS status code based on the mutex - * status code specified. - * - * @param[in] the_mutex_status is the mutex status code to translate - * - * @retval translated RTEMS status code - */ -rtems_status_code _Semaphore_Translate_core_mutex_return_code ( - uint32_t the_mutex_status -); - -/** - * @brief Semaphore Translate Core Semaphore Return Code - * - * This function returns a RTEMS status code based on the semaphore - * status code specified. - * - * @param[in] the_mutex_status is the semaphore status code to translate - * - * @retval translated RTEMS status code - */ -rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( - uint32_t the_mutex_status -); - -#ifndef __RTEMS_APPLICATION__ -#include <rtems/rtems/sem.inl> -#endif -#if defined(RTEMS_MULTIPROCESSING) -#include <rtems/rtems/semmp.h> -#endif +/**@}*/ #ifdef __cplusplus } #endif -/**@}*/ - #endif /* end of include file */ diff --git a/cpukit/rtems/inline/rtems/rtems/sem.inl b/cpukit/rtems/include/rtems/rtems/semimpl.h index d1cdbb20e6..5a433e2789 100644 --- a/cpukit/rtems/inline/rtems/rtems/sem.inl +++ b/cpukit/rtems/include/rtems/rtems/semimpl.h @@ -1,8 +1,9 @@ /** - * @file rtems/rtems/sem.inl + * @file * - * This file contains the static inlin implementation of the inlined - * routines from the Semaphore Manager. + * @ingroup ClassicSem + * + * @brief Classic Semaphores Implementation */ /* COPYRIGHT (c) 1989-2008. @@ -13,17 +14,70 @@ * http://www.rtems.com/license/LICENSE. */ -#ifndef _RTEMS_RTEMS_SEM_H -# error "Never use <rtems/rtems/sem.inl> directly; include <rtems/rtems/sem.h> instead." +#ifndef _RTEMS_RTEMS_SEMIMPL_H +#define _RTEMS_RTEMS_SEMIMPL_H + +#include <rtems/rtems/sem.h> + +#ifdef __cplusplus +extern "C" { #endif -#ifndef _RTEMS_RTEMS_SEM_INL -#define _RTEMS_RTEMS_SEM_INL +/** + * @brief Instantiate Semaphore Data + * + * Semaphore Manager -- Data Instantiation + * + * 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_SEM_EXTERN +#define RTEMS_SEM_EXTERN extern +#endif /** - * @addtogroup ClassicSem - * @{ + * The following defines the information control block used to manage + * this class of objects. */ +RTEMS_SEM_EXTERN Objects_Information _Semaphore_Information; + +/** + * @brief Semaphore Manager Initialization + * + * This routine performs the initialization necessary for this manager. + */ +void _Semaphore_Manager_initialization(void); + +/** + * @brief Semaphore Translate Core Mutex Return Code + * + * This function returns a RTEMS status code based on the mutex + * status code specified. + * + * @param[in] the_mutex_status is the mutex status code to translate + * + * @retval translated RTEMS status code + */ +rtems_status_code _Semaphore_Translate_core_mutex_return_code ( + uint32_t the_mutex_status +); + +/** + * @brief Semaphore Translate Core Semaphore Return Code + * + * This function returns a RTEMS status code based on the semaphore + * status code specified. + * + * @param[in] the_mutex_status is the semaphore status code to translate + * + * @retval translated RTEMS status code + */ +rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( + uint32_t the_mutex_status +); /** * @brief Allocates a semaphore control block from @@ -92,7 +146,13 @@ RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Get_interrupt_disable ( _Objects_Get_isr_disable( &_Semaphore_Information, id, location, level ); } -/**@}*/ +#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 index d52176de7d..a3fd2d9b2e 100644 --- a/cpukit/rtems/include/rtems/rtems/semmp.h +++ b/cpukit/rtems/include/rtems/rtems/semmp.h @@ -21,17 +21,14 @@ #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 -#include <rtems/score/mppkt.h> -#include <rtems/score/object.h> -#include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> -#include <rtems/score/thread.h> -#include <rtems/score/watchdog.h> - /** * @defgroup ClassicSEM Semaphore MP Support * diff --git a/cpukit/rtems/preinstall.am b/cpukit/rtems/preinstall.am index 128d78f789..b1e8368bf5 100644 --- a/cpukit/rtems/preinstall.am +++ b/cpukit/rtems/preinstall.am @@ -103,6 +103,10 @@ $(PROJECT_INCLUDE)/rtems/rtems/sem.h: include/rtems/rtems/sem.h $(PROJECT_INCLUD $(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 @@ -136,7 +140,6 @@ $(PROJECT_INCLUDE)/rtems/rtems/atomic.h: include/rtems/rtems/atomic.h $(PROJECT_ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/atomic.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/atomic.h endif - $(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 @@ -222,10 +225,6 @@ $(PROJECT_INCLUDE)/rtems/rtems/region.inl: inline/rtems/rtems/region.inl $(PROJE $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/region.inl PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/region.inl -$(PROJECT_INCLUDE)/rtems/rtems/sem.inl: inline/rtems/rtems/sem.inl $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp) - $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/sem.inl -PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/sem.inl - $(PROJECT_INCLUDE)/rtems/rtems/status.inl: inline/rtems/rtems/status.inl $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/status.inl PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/status.inl diff --git a/cpukit/rtems/src/sem.c b/cpukit/rtems/src/sem.c index 4e22dacb36..47188e2cd5 100644 --- a/cpukit/rtems/src/sem.c +++ b/cpukit/rtems/src/sem.c @@ -26,7 +26,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> diff --git a/cpukit/rtems/src/semcreate.c b/cpukit/rtems/src/semcreate.c index e7f7b77c50..60ce2cc6d8 100644 --- a/cpukit/rtems/src/semcreate.c +++ b/cpukit/rtems/src/semcreate.c @@ -25,7 +25,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> diff --git a/cpukit/rtems/src/semdata.c b/cpukit/rtems/src/semdata.c index d19f0cc876..ca4fb17f08 100644 --- a/cpukit/rtems/src/semdata.c +++ b/cpukit/rtems/src/semdata.c @@ -21,5 +21,4 @@ /* instantiate semaphore data */ #define RTEMS_SEM_EXTERN -#include <rtems/system.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> diff --git a/cpukit/rtems/src/semdelete.c b/cpukit/rtems/src/semdelete.c index 12eb37f51a..070529258b 100644 --- a/cpukit/rtems/src/semdelete.c +++ b/cpukit/rtems/src/semdelete.c @@ -25,7 +25,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> diff --git a/cpukit/rtems/src/semflush.c b/cpukit/rtems/src/semflush.c index bed91aa13f..0b5aaeb659 100644 --- a/cpukit/rtems/src/semflush.c +++ b/cpukit/rtems/src/semflush.c @@ -25,7 +25,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> diff --git a/cpukit/rtems/src/semident.c b/cpukit/rtems/src/semident.c index b770d69ef4..df6f05047f 100644 --- a/cpukit/rtems/src/semident.c +++ b/cpukit/rtems/src/semident.c @@ -25,7 +25,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> diff --git a/cpukit/rtems/src/semmp.c b/cpukit/rtems/src/semmp.c index 1712c66a4f..02e1d98559 100644 --- a/cpukit/rtems/src/semmp.c +++ b/cpukit/rtems/src/semmp.c @@ -24,7 +24,7 @@ #include <rtems/score/mppkt.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/thread.h> #include <rtems/score/watchdog.h> #include <rtems/rtems/support.h> diff --git a/cpukit/rtems/src/semobtain.c b/cpukit/rtems/src/semobtain.c index 5b68974d2a..38917823c4 100644 --- a/cpukit/rtems/src/semobtain.c +++ b/cpukit/rtems/src/semobtain.c @@ -25,7 +25,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> diff --git a/cpukit/rtems/src/semrelease.c b/cpukit/rtems/src/semrelease.c index a5da108736..be3f7d0579 100644 --- a/cpukit/rtems/src/semrelease.c +++ b/cpukit/rtems/src/semrelease.c @@ -40,7 +40,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> diff --git a/cpukit/rtems/src/semtranslatereturncode.c b/cpukit/rtems/src/semtranslatereturncode.c index a06a84871d..531a904039 100644 --- a/cpukit/rtems/src/semtranslatereturncode.c +++ b/cpukit/rtems/src/semtranslatereturncode.c @@ -25,7 +25,7 @@ #include <rtems/score/isr.h> #include <rtems/score/object.h> #include <rtems/rtems/options.h> -#include <rtems/rtems/sem.h> +#include <rtems/rtems/semimpl.h> #include <rtems/score/coremutex.h> #include <rtems/score/coresem.h> #include <rtems/score/states.h> |