From 0ca4fc83a4749edc3dab9cff4716db809dbf4ac4 Mon Sep 17 00:00:00 2001 From: Jennifer Averett Date: Mon, 22 Nov 1999 16:09:55 +0000 Subject: + Corrected error processing code. --- cpukit/posix/src/semaphorewaitsupp.c | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) (limited to 'cpukit') 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; } -- cgit v1.2.3