diff options
Diffstat (limited to 'cpukit/posix/include/rtems/posix/mutex.h')
-rw-r--r-- | cpukit/posix/include/rtems/posix/mutex.h | 172 |
1 files changed, 4 insertions, 168 deletions
diff --git a/cpukit/posix/include/rtems/posix/mutex.h b/cpukit/posix/include/rtems/posix/mutex.h index f228644377..1cff3642f1 100644 --- a/cpukit/posix/include/rtems/posix/mutex.h +++ b/cpukit/posix/include/rtems/posix/mutex.h @@ -19,6 +19,9 @@ #ifndef _RTEMS_POSIX_MUTEX_H #define _RTEMS_POSIX_MUTEX_H +#include <rtems/score/coremutex.h> +#include <pthread.h> + #ifdef __cplusplus extern "C" { #endif @@ -33,9 +36,6 @@ extern "C" { */ /**@{**/ -#include <rtems/score/coremutex.h> -#include <pthread.h> - /* * Data Structure used to manage a POSIX mutex */ @@ -46,175 +46,11 @@ typedef struct { CORE_mutex_Control Mutex; } POSIX_Mutex_Control; -/* - * The following defines the information control block used to manage - * this class of objects. - */ - -POSIX_EXTERN Objects_Information _POSIX_Mutex_Information; - -/* - * The default mutex attributes structure. - */ - -POSIX_EXTERN pthread_mutexattr_t _POSIX_Mutex_Default_attributes; - -/* - * @brief POSIX Mutex Manager Initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this manager. - */ - -void _POSIX_Mutex_Manager_initialization(void); - -/* - * _POSIX_Mutex_Allocate - * - * DESCRIPTION: - * - * This function allocates a mutexes control block from - * the inactive chain of free mutexes control blocks. - */ - -RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Allocate( void ); - -/* - * _POSIX_Mutex_Free - * - * DESCRIPTION: - * - * This routine frees a mutexes control block to the - * inactive chain of free mutexes control blocks. - */ - -RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Free ( - POSIX_Mutex_Control *the_mutex -); - -#if 0 -/* - * _POSIX_Mutex_Get - * - * DESCRIPTION: - * - * This function maps mutexes IDs to mutexes control blocks. - * If ID corresponds to a local mutexes, then it returns - * the_mutex control pointer which maps to ID and location - * is set to OBJECTS_LOCAL. if the mutexes ID is global and - * resides on a remote node, then location is set to OBJECTS_REMOTE, - * and the_mutex is undefined. Otherwise, location is set - * to OBJECTS_ERROR and the_mutex is undefined. - */ - -RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Get ( - Objects_Id *id, - Objects_Locations *location -); - -/* - * _POSIX_Mutex_Is_null - * - * DESCRIPTION: - * - * This function returns TRUE if the_mutex is NULL and FALSE otherwise. - */ - -RTEMS_INLINE_ROUTINE bool _POSIX_Mutex_Is_null ( - POSIX_Mutex_Control *the_mutex -); -#endif - -/* - * _POSIX_Mutex_Lock_support - * - * DESCRIPTION: - * - * A support routine which implements guts of the blocking, non-blocking, and - * timed wait version of mutex lock. - */ - -int _POSIX_Mutex_Lock_support( - pthread_mutex_t *mutex, - bool blocking, - Watchdog_Interval timeout -); - -/** - * @brief Convert core mutex status codes into the appropriate POSIX status - * values. - * - * DESCRIPTION: - * - * A support routine which converts core mutex status codes into the - * appropriate POSIX status values. - * - * @param[in] the_mutex_status is the mutex status code to translate - * - * @retval 0 Mutex status code indicates the operation completed successfully. - * @retval EBUSY Mutex status code indicates that the operation unable to - * complete immediately because the resource was unavailable. - * @retval EDEADLK Mutex status code indicates that an attempt was made to - * relock a mutex for which nesting is not configured. - * @retval EPERM Mutex status code indicates that an attempt was made to - * release a mutex by a thread other than the thread which locked it. - * @retval EINVAL Mutex status code indicates that the thread was blocked - * waiting for an operation to complete and the mutex was deleted. - * @retval ETIMEDOUT Mutex status code indicates that the calling task was - * willing to block but the operation was unable to complete within the time - * allotted because the resource never became available. - */ - -int _POSIX_Mutex_Translate_core_mutex_return_code( - CORE_mutex_Status the_mutex_status -); - - -/* - * _POSIX_Mutex_Get - * - * DESCRIPTION: - * - * A support routine which translates the mutex id into a local pointer. - * As a side-effect, it may create the mutex. - * - * NOTE: - * - * This version of the method uses a dispatching critical section. - */ - -POSIX_Mutex_Control *_POSIX_Mutex_Get ( - pthread_mutex_t *mutex, - Objects_Locations *location -); - -/* - * _POSIX_Mutex_Get - * - * DESCRIPTION: - * - * A support routine which translates the mutex id into a local pointer. - * As a side-effect, it may create the mutex. - * - * NOTE: - * - * This version of the method uses an interrupt critical section. - */ - -POSIX_Mutex_Control *_POSIX_Mutex_Get_interrupt_disable ( - pthread_mutex_t *mutex, - Objects_Locations *location, - ISR_Level *level -); - -#include <rtems/posix/mutex.inl> +/** @} */ #ifdef __cplusplus } #endif -/** @} */ - #endif /* end of include file */ |