diff options
author | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 1999-11-22 16:09:55 +0000 |
---|---|---|
committer | Jennifer Averett <Jennifer.Averett@OARcorp.com> | 1999-11-22 16:09:55 +0000 |
commit | 0ca4fc83a4749edc3dab9cff4716db809dbf4ac4 (patch) | |
tree | 9e21e869eeec82c1f13051416f07c49de8495e28 /cpukit/posix | |
parent | + Added checks for NULL and NULL string names (for sem_open & sem_unlink). (diff) | |
download | rtems-0ca4fc83a4749edc3dab9cff4716db809dbf4ac4.tar.bz2 |
+ Corrected error processing code.
Diffstat (limited to 'cpukit/posix')
-rw-r--r-- | cpukit/posix/src/semaphorewaitsupp.c | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/cpukit/posix/src/semaphorewaitsupp.c b/cpukit/posix/src/semaphorewaitsupp.c index 1162b71c49..c3aba8c90d 100644 --- a/cpukit/posix/src/semaphorewaitsupp.c +++ b/cpukit/posix/src/semaphorewaitsupp.c @@ -29,7 +29,6 @@ int _POSIX_Semaphore_Wait_support( { register POSIX_Semaphore_Control *the_semaphore; Objects_Locations location; - int code; the_semaphore = _POSIX_Semaphore_Get( sem, &location ); switch ( location ) { @@ -37,7 +36,6 @@ int _POSIX_Semaphore_Wait_support( set_errno_and_return_minus_one( EINVAL ); case OBJECTS_REMOTE: _Thread_Dispatch(); - return POSIX_MP_NOT_IMPLEMENTED(); set_errno_and_return_minus_one( EINVAL ); case OBJECTS_LOCAL: _CORE_semaphore_Seize( @@ -47,20 +45,23 @@ int _POSIX_Semaphore_Wait_support( timeout ); _Thread_Enable_dispatch(); - code = _Thread_Executing->Wait.return_code; - switch (_Thread_Executing->Wait.return_code) { - case 1: - errno = EAGAIN; - code = -1; + switch ( _Thread_Executing->Wait.return_code ) { + case CORE_SEMAPHORE_STATUS_SUCCESSFUL: break; - case 3: - errno = ETIMEDOUT; - code = -1; + case CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT: + set_errno_and_return_minus_one( EAGAIN ); + case CORE_SEMAPHORE_WAS_DELETED: + set_errno_and_return_minus_one( EAGAIN ); + case CORE_SEMAPHORE_TIMEOUT: + set_errno_and_return_minus_one( ETIMEDOUT ); break; + case CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED: + /* + * This error can not occur since we set the maximum + * count to the largest value the count can hold. + */ + break; } - - /*return _Thread_Executing->Wait.return_code;*/ - return code; } - return POSIX_BOTTOM_REACHED(); + return 0; } |