From 3507c6df7041f19ec33c6056076520849dd59ac3 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 5 Jan 2009 20:26:01 +0000 Subject: 2009-01-05 Joel Sherrill * libcsupport/src/gxx_wrappers.c, posix/include/mqueue.h, posix/include/rtems/posix/semaphore.h, posix/inline/rtems/posix/barrier.inl, posix/inline/rtems/posix/key.inl, posix/inline/rtems/posix/mqueue.inl, posix/inline/rtems/posix/rwlock.inl, posix/inline/rtems/posix/semaphore.inl, posix/inline/rtems/posix/spinlock.inl, posix/inline/rtems/posix/timer.inl, posix/src/condget.c, posix/src/mqueuenametoid.c, posix/src/mutexget.c, posix/src/semaphorenametoid.c, posix/src/semopen.c, sapi/src/itronapi.c, sapi/src/posixapi.c: Make changes necessary for all tests to run on SPARC with 16-bit Ids. This required ensuring that all POSIX and compilering binding code makes a distinction between the public Id type (e.g. pthread_t, etc.) and the RTEMS Object_Id type. All POSIX Object Get routines should not take the POSIX Id type as the argument. Sixteen bit RTEMS Ids should be placed into the 32-bits reserved by the POSIX API type in a uniform manner now. This removed all assumptions that the external Id types in POSIX and ITRON are the same as the internal Object Id type. --- cpukit/posix/inline/rtems/posix/barrier.inl | 2 +- cpukit/posix/inline/rtems/posix/key.inl | 43 ++++++++++++++++----------- cpukit/posix/inline/rtems/posix/mqueue.inl | 9 ++++-- cpukit/posix/inline/rtems/posix/rwlock.inl | 2 +- cpukit/posix/inline/rtems/posix/semaphore.inl | 3 +- cpukit/posix/inline/rtems/posix/spinlock.inl | 2 +- cpukit/posix/inline/rtems/posix/timer.inl | 4 +-- 7 files changed, 38 insertions(+), 27 deletions(-) (limited to 'cpukit/posix/inline') diff --git a/cpukit/posix/inline/rtems/posix/barrier.inl b/cpukit/posix/inline/rtems/posix/barrier.inl index 7995f13786..2557f33cd8 100644 --- a/cpukit/posix/inline/rtems/posix/barrier.inl +++ b/cpukit/posix/inline/rtems/posix/barrier.inl @@ -68,7 +68,7 @@ RTEMS_INLINE_ROUTINE POSIX_Barrier_Control *_POSIX_Barrier_Get ( { return (POSIX_Barrier_Control *) _Objects_Get( &_POSIX_Barrier_Information, - *((Objects_Id *)barrier), + (Objects_Id) *barrier, location ); } diff --git a/cpukit/posix/inline/rtems/posix/key.inl b/cpukit/posix/inline/rtems/posix/key.inl index 6fbce5a7ee..c5c6324d06 100644 --- a/cpukit/posix/inline/rtems/posix/key.inl +++ b/cpukit/posix/inline/rtems/posix/key.inl @@ -1,12 +1,11 @@ /** - * @file rtems/posix/key.inl - */ - -/* rtems/posix/key.inl + * @file rtems/posix/key.inl * * This include file contains the static inline implementation of the private * inlined routines for POSIX key's. - * + */ + +/* * COPYRIGHT (c) 1989-1999. * On-Line Applications Research Corporation (OAR). * @@ -24,9 +23,11 @@ #ifndef _RTEMS_POSIX_KEY_INL #define _RTEMS_POSIX_KEY_INL -/*PAGE +/** + * @brief _POSIX_Keys_Allocate * - * _POSIX_Keys_Allocate + * This function allocates a keys control block from + * the inactive chain of free keys control blocks. */ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) @@ -34,11 +35,12 @@ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information ); } -/*PAGE +/** + * @brief _POSIX_Keys_Free * - * _POSIX_Keys_Free + * This routine frees a keys control block to the + * inactive chain of free keys control blocks. */ - RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( POSIX_Keys_Control *the_key ) @@ -46,25 +48,32 @@ RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free ( _Objects_Free( &_POSIX_Keys_Information, &the_key->Object ); } -/*PAGE +/** + * @brief _POSIX_Keys_Get * - * _POSIX_Keys_Get + * This function maps key IDs to key control blocks. + * If ID corresponds to a local keys, then it returns + * the_key control pointer which maps to ID and location + * is set to OBJECTS_LOCAL. if the keys ID is global and + * resides on a remote node, then location is set to OBJECTS_REMOTE, + * and the_key is undefined. Otherwise, location is set + * to OBJECTS_ERROR and the_key is undefined. */ RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Get ( - Objects_Id id, + pthread_key_t id, Objects_Locations *location ) { return (POSIX_Keys_Control *) - _Objects_Get( &_POSIX_Keys_Information, id, location ); + _Objects_Get( &_POSIX_Keys_Information, (Objects_Id) id, location ); } -/*PAGE +/** + * @brief _POSIX_Keys_Is_null * - * _POSIX_Keys_Is_null + * This function returns TRUE if the_key is NULL and FALSE otherwise. */ - RTEMS_INLINE_ROUTINE bool _POSIX_Keys_Is_null ( POSIX_Keys_Control *the_key ) diff --git a/cpukit/posix/inline/rtems/posix/mqueue.inl b/cpukit/posix/inline/rtems/posix/mqueue.inl index 22862edf0c..62bc3ce327 100644 --- a/cpukit/posix/inline/rtems/posix/mqueue.inl +++ b/cpukit/posix/inline/rtems/posix/mqueue.inl @@ -105,12 +105,15 @@ RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control *_POSIX_Message_queue_Get ( */ RTEMS_INLINE_ROUTINE POSIX_Message_queue_Control_fd *_POSIX_Message_queue_Get_fd ( - Objects_Id id, + mqd_t id, Objects_Locations *location ) { - return (POSIX_Message_queue_Control_fd *) - _Objects_Get( &_POSIX_Message_queue_Information_fds, id, location ); + return (POSIX_Message_queue_Control_fd *) _Objects_Get( + &_POSIX_Message_queue_Information_fds, + (Objects_Id)id, + location + ); } /*PAGE diff --git a/cpukit/posix/inline/rtems/posix/rwlock.inl b/cpukit/posix/inline/rtems/posix/rwlock.inl index b0410fa104..ac11d35d3c 100644 --- a/cpukit/posix/inline/rtems/posix/rwlock.inl +++ b/cpukit/posix/inline/rtems/posix/rwlock.inl @@ -68,7 +68,7 @@ RTEMS_INLINE_ROUTINE POSIX_RWLock_Control *_POSIX_RWLock_Get ( { return (POSIX_RWLock_Control *) _Objects_Get( &_POSIX_RWLock_Information, - *((Objects_Id *)RWLock), + (Objects_Id) *RWLock, location ); } diff --git a/cpukit/posix/inline/rtems/posix/semaphore.inl b/cpukit/posix/inline/rtems/posix/semaphore.inl index 59917bb081..eb885f1aa0 100644 --- a/cpukit/posix/inline/rtems/posix/semaphore.inl +++ b/cpukit/posix/inline/rtems/posix/semaphore.inl @@ -66,14 +66,13 @@ RTEMS_INLINE_ROUTINE void _POSIX_Semaphore_Namespace_remove ( * * _POSIX_Semaphore_Get */ - RTEMS_INLINE_ROUTINE POSIX_Semaphore_Control *_POSIX_Semaphore_Get ( sem_t *id, Objects_Locations *location ) { return (POSIX_Semaphore_Control *) - _Objects_Get( &_POSIX_Semaphore_Information, *id, location ); + _Objects_Get( &_POSIX_Semaphore_Information, (Objects_Id)*id, location ); } /*PAGE diff --git a/cpukit/posix/inline/rtems/posix/spinlock.inl b/cpukit/posix/inline/rtems/posix/spinlock.inl index 97cdeb97bb..6007258e01 100644 --- a/cpukit/posix/inline/rtems/posix/spinlock.inl +++ b/cpukit/posix/inline/rtems/posix/spinlock.inl @@ -68,7 +68,7 @@ RTEMS_INLINE_ROUTINE POSIX_Spinlock_Control *_POSIX_Spinlock_Get ( { return (POSIX_Spinlock_Control *) _Objects_Get( &_POSIX_Spinlock_Information, - *((Objects_Id *)spinlock), + (Objects_Id) *spinlock, location ); } diff --git a/cpukit/posix/inline/rtems/posix/timer.inl b/cpukit/posix/inline/rtems/posix/timer.inl index 383e65102f..63db10c8ab 100644 --- a/cpukit/posix/inline/rtems/posix/timer.inl +++ b/cpukit/posix/inline/rtems/posix/timer.inl @@ -70,12 +70,12 @@ RTEMS_INLINE_ROUTINE void _POSIX_Timer_Free ( */ RTEMS_INLINE_ROUTINE POSIX_Timer_Control *_POSIX_Timer_Get ( - Objects_Id id, + timer_t id, Objects_Locations *location ) { return (POSIX_Timer_Control *) - _Objects_Get( &_POSIX_Timer_Information, id, location ); + _Objects_Get( &_POSIX_Timer_Information, (Objects_Id) id, location ); } /*PAGE -- cgit v1.2.3