From f4d9ab3e28d28c9ab9ac5a41bf431f2f78975af2 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Tue, 23 Jul 2013 11:33:56 +0200 Subject: rtems: Create asr implementation header Move implementation specific parts of asr.h and asr.inl into new header file asrimpl.h. The asr.h contains now only the application visible API. --- cpukit/rtems/Makefile.am | 2 +- cpukit/rtems/include/rtems/rtems/asr.h | 6 +- cpukit/rtems/include/rtems/rtems/asrimpl.h | 126 +++++++++++++++++++++++++++++ cpukit/rtems/inline/rtems/rtems/asr.inl | 122 ---------------------------- cpukit/rtems/preinstall.am | 8 +- cpukit/rtems/src/signalcatch.c | 1 + cpukit/rtems/src/signalsend.c | 1 + cpukit/rtems/src/taskmode.c | 1 + cpukit/rtems/src/tasks.c | 1 + 9 files changed, 136 insertions(+), 132 deletions(-) create mode 100644 cpukit/rtems/include/rtems/rtems/asrimpl.h delete mode 100644 cpukit/rtems/inline/rtems/rtems/asr.inl diff --git a/cpukit/rtems/Makefile.am b/cpukit/rtems/Makefile.am index 817e4ccaff..07fdfa2b9b 100644 --- a/cpukit/rtems/Makefile.am +++ b/cpukit/rtems/Makefile.am @@ -15,6 +15,7 @@ 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 @@ -64,7 +65,6 @@ include_rtems_rtems_HEADERS += include/rtems/rtems/signalmp.h include_rtems_rtems_HEADERS += include/rtems/rtems/taskmp.h endif -include_rtems_rtems_HEADERS += inline/rtems/rtems/asr.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/asr.h b/cpukit/rtems/include/rtems/rtems/asr.h index 6516233328..225b0b9e37 100644 --- a/cpukit/rtems/include/rtems/rtems/asr.h +++ b/cpukit/rtems/include/rtems/rtems/asr.h @@ -145,15 +145,11 @@ typedef struct { /** This defines the bit in the signal set associated with signal 31. */ #define RTEMS_SIGNAL_31 0x80000000 -#ifndef __RTEMS_APPLICATION__ -#include -#endif +/**@}*/ #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 new file mode 100644 index 0000000000..dc7da55dfe --- /dev/null +++ b/cpukit/rtems/include/rtems/rtems/asrimpl.h @@ -0,0 +1,126 @@ +/** + * @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.com/license/LICENSE. + */ + +#ifndef _RTEMS_RTEMS_ASRIMPL_H +#define _RTEMS_RTEMS_ASRIMPL_H + +#include +#include + +#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 *information +) +{ + information->is_enabled = false; + information->handler = NULL; + information->mode_set = RTEMS_DEFAULT_MODES; + information->signals_posted = 0; + information->signals_pending = 0; + information->nest_level = 0; +} + +/** + * @brief ASR_Swap_signals + * + * This routine atomically swaps the pending and posted signal + * sets. This is done when the thread alters its mode in such a + * way that the RTEMS_ASR disable/enable flag changes. + */ +RTEMS_INLINE_ROUTINE void _ASR_Swap_signals ( + ASR_Information *information +) +{ + rtems_signal_set _signals; + ISR_Level _level; + + _ISR_Disable( _level ); + _signals = information->signals_pending; + information->signals_pending = information->signals_posted; + information->signals_posted = _signals; + _ISR_Enable( _level ); +} + +/** + * @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; +} + +/** + * @brief ASR_Are_signals_pending + * + * This function returns TRUE if there are signals pending in the + * given RTEMS_ASR information record and FALSE otherwise. + */ +RTEMS_INLINE_ROUTINE bool _ASR_Are_signals_pending ( + ASR_Information *information +) +{ + return information->signals_posted != 0; +} + +/** + * @brief ASR_Post_signals + * + * This routine posts the given signals into the signal_set + * passed in. The result is returned to the user in signal_set. + * + * NOTE: This must be implemented as a macro. + */ +RTEMS_INLINE_ROUTINE void _ASR_Post_signals( + rtems_signal_set signals, + rtems_signal_set *signal_set +) +{ + ISR_Level _level; + + _ISR_Disable( _level ); + *signal_set |= signals; + _ISR_Enable( _level ); +} + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif +/* end of include file */ diff --git a/cpukit/rtems/inline/rtems/rtems/asr.inl b/cpukit/rtems/inline/rtems/rtems/asr.inl deleted file mode 100644 index 9f42120018..0000000000 --- a/cpukit/rtems/inline/rtems/rtems/asr.inl +++ /dev/null @@ -1,122 +0,0 @@ -/** - * @file rtems/rtems/asr.inl - * - * @defgroup ClassicASR ASR Support - * - * @ingroup ClassicRTEMS - * @brief Asynchronous Signal Handler - * - * This include file contains the implemenation of all routines - * associated with the asynchronous signal handler which are inlined. - */ - -/* 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_ASR_H -# error "Never use directly; include instead." -#endif - -#ifndef _RTEMS_RTEMS_ASR_INL -#define _RTEMS_RTEMS_ASR_INL - -#include - -/** - * @addtogroup ClassicASR - * @{ - */ - -/** - * @brief ASR_Initialize - * - * This routine initializes the given RTEMS_ASR information record. - */ -RTEMS_INLINE_ROUTINE void _ASR_Initialize ( - ASR_Information *information -) -{ - information->is_enabled = false; - information->handler = NULL; - information->mode_set = RTEMS_DEFAULT_MODES; - information->signals_posted = 0; - information->signals_pending = 0; - information->nest_level = 0; -} - -/** - * @brief ASR_Swap_signals - * - * This routine atomically swaps the pending and posted signal - * sets. This is done when the thread alters its mode in such a - * way that the RTEMS_ASR disable/enable flag changes. - */ -RTEMS_INLINE_ROUTINE void _ASR_Swap_signals ( - ASR_Information *information -) -{ - rtems_signal_set _signals; - ISR_Level _level; - - _ISR_Disable( _level ); - _signals = information->signals_pending; - information->signals_pending = information->signals_posted; - information->signals_posted = _signals; - _ISR_Enable( _level ); -} - -/** - * @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; -} - -/** - * @brief ASR_Are_signals_pending - * - * This function returns TRUE if there are signals pending in the - * given RTEMS_ASR information record and FALSE otherwise. - */ -RTEMS_INLINE_ROUTINE bool _ASR_Are_signals_pending ( - ASR_Information *information -) -{ - return information->signals_posted != 0; -} - -/** - * @brief ASR_Post_signals - * - * This routine posts the given signals into the signal_set - * passed in. The result is returned to the user in signal_set. - * - * NOTE: This must be implemented as a macro. - */ -RTEMS_INLINE_ROUTINE void _ASR_Post_signals( - rtems_signal_set signals, - rtems_signal_set *signal_set -) -{ - ISR_Level _level; - - _ISR_Disable( _level ); - *signal_set |= signals; - _ISR_Enable( _level ); -} - -/**@}*/ - -#endif -/* end of include file */ diff --git a/cpukit/rtems/preinstall.am b/cpukit/rtems/preinstall.am index 72b00a7849..cf823b0e3f 100644 --- a/cpukit/rtems/preinstall.am +++ b/cpukit/rtems/preinstall.am @@ -31,6 +31,10 @@ $(PROJECT_INCLUDE)/rtems/rtems/asr.h: include/rtems/rtems/asr.h $(PROJECT_INCLUD $(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 @@ -201,10 +205,6 @@ $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h: include/rtems/rtems/taskmp.h $(PROJECT_ $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/taskmp.h endif -$(PROJECT_INCLUDE)/rtems/rtems/asr.inl: inline/rtems/rtems/asr.inl $(PROJECT_INCLUDE)/rtems/rtems/$(dirstamp) - $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/rtems/rtems/asr.inl -PREINSTALL_FILES += $(PROJECT_INCLUDE)/rtems/rtems/asr.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/signalcatch.c b/cpukit/rtems/src/signalcatch.c index 4b709a85f9..4821e1fb8c 100644 --- a/cpukit/rtems/src/signalcatch.c +++ b/cpukit/rtems/src/signalcatch.c @@ -19,6 +19,7 @@ #endif #include +#include #include #include #include diff --git a/cpukit/rtems/src/signalsend.c b/cpukit/rtems/src/signalsend.c index eb259303f4..f8002e5789 100644 --- a/cpukit/rtems/src/signalsend.c +++ b/cpukit/rtems/src/signalsend.c @@ -19,6 +19,7 @@ #endif #include +#include #include #include #include diff --git a/cpukit/rtems/src/taskmode.c b/cpukit/rtems/src/taskmode.c index 3439f89549..24e75bbed2 100644 --- a/cpukit/rtems/src/taskmode.c +++ b/cpukit/rtems/src/taskmode.c @@ -20,6 +20,7 @@ #include #include +#include #include #include #include diff --git a/cpukit/rtems/src/tasks.c b/cpukit/rtems/src/tasks.c index 99bcef93c6..b586487f93 100644 --- a/cpukit/rtems/src/tasks.c +++ b/cpukit/rtems/src/tasks.c @@ -20,6 +20,7 @@ #include #include +#include #include #include #include -- cgit v1.2.3