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/src/semopen.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'cpukit/posix/src/semopen.c') diff --git a/cpukit/posix/src/semopen.c b/cpukit/posix/src/semopen.c index 02b518f588..f3e857e37a 100644 --- a/cpukit/posix/src/semopen.c +++ b/cpukit/posix/src/semopen.c @@ -53,7 +53,7 @@ sem_t *sem_open( unsigned int value = 0; int status; sem_t the_semaphore_id; - Objects_Id *id; + sem_t *id; POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; @@ -101,9 +101,7 @@ sem_t *sem_open( the_semaphore->open_count += 1; _Thread_Enable_dispatch(); _Thread_Enable_dispatch(); - id = &the_semaphore->Object.id; - return (sem_t *)id; - + goto return_id; } /* @@ -127,6 +125,12 @@ sem_t *sem_open( if ( status == -1 ) return SEM_FAILED; - id = &the_semaphore->Object.id; - return (sem_t *)id; +return_id: + #if defined(RTEMS_USE_16_BIT_OBJECT) + the_semaphore->Semaphore_id = the_semaphore->Object.id; + id = &the_semaphore->Semaphore_id; + #else + id = &the_semaphore->Object.id; + #endif + return id; } -- cgit v1.2.3