diff options
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/include/rtems/score/corespinlock.h | 77 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/corespinlockimpl.h | 130 | ||||
-rw-r--r-- | cpukit/score/include/rtems/score/objectimpl.h | 3 |
3 files changed, 1 insertions, 209 deletions
diff --git a/cpukit/score/include/rtems/score/corespinlock.h b/cpukit/score/include/rtems/score/corespinlock.h deleted file mode 100644 index 1666538bf6..0000000000 --- a/cpukit/score/include/rtems/score/corespinlock.h +++ /dev/null @@ -1,77 +0,0 @@ -/** - * @file rtems/score/corespinlock.h - * - * @brief Constants and Structures Associated with the Spinlock Handler - * - * This include file contains all the constants and structures associated - * with the Spinlock Handler. - */ - -/* - * COPYRIGHT (c) 1989-2006. - * 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_SCORE_CORESPINLOCK_H -#define _RTEMS_SCORE_CORESPINLOCK_H - -#include <rtems/score/isrlock.h> -#include <rtems/score/thread.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup ScoreSpinlock Spinlock Handler - * - * @ingroup Score - * - * This handler encapsulates functionality which provides the foundation - * Spinlock services used in all of the APIs supported by RTEMS. - */ -/**@{*/ - -/** - * The following defines the control block used to manage each - * spinlock. - */ -typedef struct { - /** - * @brief Lock to protect the other fields. - * - * This implementation is a bit stupid. However, test cases in the Linux - * Test Project do things like sleep() and printf() while owning a - * pthread_spinlock_t, e.g. - * testcases/open_posix_testsuite/conformance/interfaces/pthread_spin_lock/1-2.c - */ - ISR_LOCK_MEMBER( Lock ) - - /** This field is the lock. - */ - uint32_t lock; - - /** This field is a count of the current number of threads using - * this spinlock. It includes the thread holding the lock as well - * as those waiting. - */ - uint32_t users; - - /** This field is the Id of the thread holding the lock. It may or may - * not be the thread which acquired it. - */ - Thread_Control *holder; -} CORE_spinlock_Control; - -/**@}*/ - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/cpukit/score/include/rtems/score/corespinlockimpl.h b/cpukit/score/include/rtems/score/corespinlockimpl.h deleted file mode 100644 index 140529b573..0000000000 --- a/cpukit/score/include/rtems/score/corespinlockimpl.h +++ /dev/null @@ -1,130 +0,0 @@ -/** - * @file - * - * @brief Inlined Routines Associated with the SuperCore Spinlock - * - * This include file contains all of the inlined routines associated - * with the SuperCore spinlock. - */ - -/* - * 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_SCORE_CORESPINLOCKIMPL_H -#define _RTEMS_SCORE_CORESPINLOCKIMPL_H - -#include <rtems/score/corespinlock.h> -#include <rtems/score/status.h> -#include <rtems/score/watchdog.h> - -#include <string.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @addtogroup ScoreSpinlock - */ -/**@{**/ - -/** This indicates the lock is available. */ -#define CORE_SPINLOCK_UNLOCKED 0 - -/** This indicates the lock is unavailable. */ -#define CORE_SPINLOCK_LOCKED 1 - -/** - * @brief Initialize the spinlock. - * - * This routine initializes the spinlock based on the parameters passed. - * - * @param[in] the_spinlock is the spinlock control block to initialize - */ -RTEMS_INLINE_ROUTINE void _CORE_spinlock_Initialize( - CORE_spinlock_Control *the_spinlock -) -{ - memset( the_spinlock, 0, sizeof( *the_spinlock ) ); -} - -RTEMS_INLINE_ROUTINE void _CORE_spinlock_Acquire_critical( - CORE_spinlock_Control *the_spinlock, - ISR_lock_Context *lock_context -) -{ - _ISR_lock_Acquire( &the_spinlock->Lock, lock_context ); -} - -RTEMS_INLINE_ROUTINE void _CORE_spinlock_Release( - CORE_spinlock_Control *the_spinlock, - ISR_lock_Context *lock_context -) -{ - _ISR_lock_Release_and_ISR_enable( &the_spinlock->Lock, lock_context ); -} - -/** - * @brief Wait for spinlock. - * - * This routine wait for the spinlock to be released. If the spinlock - * is set to automatic and this is the appropriate thread, then it returns - * immediately. Otherwise, the calling thread is blocked until the spinlock - * is released. - * - * @param[in] the_spinlock is the spinlock to wait for - * @param[in] wait is true if willing to wait - * @param[in] timeout is the maximum number of ticks to spin (0 is forever) - * - * @retval A status is returned which indicates the success or failure of - * this operation. - */ -Status_Control _CORE_spinlock_Seize( - CORE_spinlock_Control *the_spinlock, - bool wait, - Watchdog_Interval timeout, - ISR_lock_Context *lock_context -); - -/** - * @brief Manually release the spinlock. - * - * This routine manually releases the spinlock. All of the threads waiting - * for the spinlock will be readied. - * - * @param[in] the_spinlock is the spinlock to surrender - */ -Status_Control _CORE_spinlock_Surrender( - CORE_spinlock_Control *the_spinlock, - ISR_lock_Context *lock_context -); - -/** - * This method is used to determine if the spinlock is available or not. - * - * @param[in] the_spinlock will be checked - * - * @return This method will return true if the spinlock is busy - * and false otherwise. - */ -RTEMS_INLINE_ROUTINE bool _CORE_spinlock_Is_busy( - CORE_spinlock_Control *the_spinlock -) -{ - return (the_spinlock->users != 0); -} - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif -/* end of include file */ diff --git a/cpukit/score/include/rtems/score/objectimpl.h b/cpukit/score/include/rtems/score/objectimpl.h index f5beb3b971..a00aa2276e 100644 --- a/cpukit/score/include/rtems/score/objectimpl.h +++ b/cpukit/score/include/rtems/score/objectimpl.h @@ -92,8 +92,7 @@ typedef enum { OBJECTS_POSIX_CONDITION_VARIABLES = 8, OBJECTS_POSIX_TIMERS = 9, OBJECTS_POSIX_BARRIERS = 10, - OBJECTS_POSIX_SPINLOCKS = 11, - OBJECTS_POSIX_RWLOCKS = 12 + OBJECTS_POSIX_RWLOCKS = 11 } Objects_POSIX_API; /** This macro is used to generically specify the last API index. */ |