diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-14 10:11:38 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2016-03-14 10:56:22 +0100 |
commit | 18ff88962458f9b0aa1150a4cfc89ac5bdd622e7 (patch) | |
tree | 925fc4510ec675b56e1218736d2b599dc9516341 /cpukit/sapi/include | |
parent | bsp/qoriq: Fix interrupt numbers (diff) | |
download | rtems-18ff88962458f9b0aa1150a4cfc89ac5bdd622e7.tar.bz2 |
score: Use ISR lock for IO driver registration
Create implementation header file.
Update #2555.
Diffstat (limited to 'cpukit/sapi/include')
-rw-r--r-- | cpukit/sapi/include/confdefs.h | 1 | ||||
-rw-r--r-- | cpukit/sapi/include/rtems/io.h | 13 | ||||
-rw-r--r-- | cpukit/sapi/include/rtems/ioimpl.h | 65 |
3 files changed, 66 insertions, 13 deletions
diff --git a/cpukit/sapi/include/confdefs.h b/cpukit/sapi/include/confdefs.h index ee2558cbc8..89beb2304b 100644 --- a/cpukit/sapi/include/confdefs.h +++ b/cpukit/sapi/include/confdefs.h @@ -26,6 +26,7 @@ * Include the executive's configuration */ #include <rtems.h> +#include <rtems/ioimpl.h> #include <rtems/sysinit.h> #include <rtems/score/apimutex.h> #include <rtems/score/percpu.h> diff --git a/cpukit/sapi/include/rtems/io.h b/cpukit/sapi/include/rtems/io.h index f5876a0283..760d412bb8 100644 --- a/cpukit/sapi/include/rtems/io.h +++ b/cpukit/sapi/include/rtems/io.h @@ -246,19 +246,6 @@ rtems_status_code rtems_io_lookup_name( rtems_driver_name_t *device_info ) RTEMS_DEPRECATED; -extern const size_t _IO_Number_of_drivers; - -extern rtems_driver_address_table _IO_Driver_address_table[]; - -extern bool _IO_All_drivers_initialized; - -/** - * @brief Initialization of all device drivers. - * - * Initializes all device drivers. - */ -void _IO_Initialize_all_drivers( void ); - #ifdef __cplusplus } #endif diff --git a/cpukit/sapi/include/rtems/ioimpl.h b/cpukit/sapi/include/rtems/ioimpl.h new file mode 100644 index 0000000000..5c4a82eea6 --- /dev/null +++ b/cpukit/sapi/include/rtems/ioimpl.h @@ -0,0 +1,65 @@ +/** + * @file + * + * @brief Classic Input/Output Manager Implementation 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_IOIMPL_H +#define _RTEMS_IOIMPL_H + +#include <rtems/io.h> +#include <rtems/score/isrlock.h> + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +extern const size_t _IO_Number_of_drivers; + +extern rtems_driver_address_table _IO_Driver_address_table[]; + +extern bool _IO_All_drivers_initialized; + +/** + * @brief Initialization of all device drivers. + * + * Initializes all device drivers. + */ +void _IO_Initialize_all_drivers( void ); + +ISR_LOCK_DECLARE( extern, _IO_Driver_registration_lock ) + +RTEMS_INLINE_ROUTINE void _IO_Driver_registration_acquire( + ISR_lock_Context *lock_context +) +{ + _ISR_lock_ISR_disable_and_acquire( + &_IO_Driver_registration_lock, + lock_context + ); +} + +RTEMS_INLINE_ROUTINE void _IO_Driver_registration_release( + ISR_lock_Context *lock_context +) +{ + _ISR_lock_Release_and_ISR_enable( + &_IO_Driver_registration_lock, + lock_context + ); +} + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* _RTEMS_IOIMPL_H */ |