Changeset 69c9543 in rtems


Ignore:
Timestamp:
07/04/96 18:09:23 (26 years ago)
Author:
Joel Sherrill <joel.sherrill@…>
Branches:
4.10, 4.11, 4.8, 4.9, 5, master
Children:
adae080a
Parents:
ce78b894
Message:

basic test cases passed

Files:
2 edited

Legend:

Unmodified
Added
Removed
  • c/src/exec/posix/src/mutex.c

    rce78b894 r69c9543  
    6262  FALSE                                    /* recursive      */
    6363};
     64
     65/*PAGE
     66 *
     67 *  _POSIX_Mutex_From_core_mutex_status
     68 */
     69
     70int _POSIX_Mutex_From_core_mutex_status(
     71  CORE_mutex_Status  status
     72)
     73{
     74  switch ( status ) {
     75    case CORE_MUTEX_STATUS_SUCCESSFUL:
     76      return 0;
     77    case CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT:
     78      return EBUSY;
     79    case CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED:
     80      return EDEADLK;
     81    case CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE:
     82      return EPERM;
     83    case CORE_MUTEX_WAS_DELETED:
     84      return EINVAL;
     85    case CORE_MUTEX_TIMEOUT:
     86      return EAGAIN;
     87    default:
     88      break;
     89  }
     90  assert( 0 );
     91  return 0;
     92}
    6493
    6594/*PAGE
     
    365394      );
    366395      _Thread_Enable_dispatch();
    367       return _Thread_Executing->Wait.return_code;
    368       break;
     396      return _POSIX_Mutex_From_core_mutex_status(
     397        (CORE_mutex_Status) _Thread_Executing->Wait.return_code
     398      );
    369399  }
    370400  return POSIX_BOTTOM_REACHED();
     
    420450  register POSIX_Mutex_Control *the_mutex;
    421451  Objects_Locations             location;
     452  CORE_mutex_Status             status;
    422453 
    423454  the_mutex = _POSIX_Mutex_Get( mutex, &location );
     
    433464      );
    434465    case OBJECTS_LOCAL:
    435       _CORE_mutex_Surrender(
     466      status = _CORE_mutex_Surrender(
    436467        &the_mutex->Mutex,
    437468        the_mutex->Object.id,
     
    439470      );
    440471      _Thread_Enable_dispatch();
    441       return _Thread_Executing->Wait.return_code; /* XXX return status */
     472      return _POSIX_Mutex_From_core_mutex_status( status );
    442473      break;
    443474  }
  • cpukit/posix/src/mutex.c

    rce78b894 r69c9543  
    6262  FALSE                                    /* recursive      */
    6363};
     64
     65/*PAGE
     66 *
     67 *  _POSIX_Mutex_From_core_mutex_status
     68 */
     69
     70int _POSIX_Mutex_From_core_mutex_status(
     71  CORE_mutex_Status  status
     72)
     73{
     74  switch ( status ) {
     75    case CORE_MUTEX_STATUS_SUCCESSFUL:
     76      return 0;
     77    case CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT:
     78      return EBUSY;
     79    case CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED:
     80      return EDEADLK;
     81    case CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE:
     82      return EPERM;
     83    case CORE_MUTEX_WAS_DELETED:
     84      return EINVAL;
     85    case CORE_MUTEX_TIMEOUT:
     86      return EAGAIN;
     87    default:
     88      break;
     89  }
     90  assert( 0 );
     91  return 0;
     92}
    6493
    6594/*PAGE
     
    365394      );
    366395      _Thread_Enable_dispatch();
    367       return _Thread_Executing->Wait.return_code;
    368       break;
     396      return _POSIX_Mutex_From_core_mutex_status(
     397        (CORE_mutex_Status) _Thread_Executing->Wait.return_code
     398      );
    369399  }
    370400  return POSIX_BOTTOM_REACHED();
     
    420450  register POSIX_Mutex_Control *the_mutex;
    421451  Objects_Locations             location;
     452  CORE_mutex_Status             status;
    422453 
    423454  the_mutex = _POSIX_Mutex_Get( mutex, &location );
     
    433464      );
    434465    case OBJECTS_LOCAL:
    435       _CORE_mutex_Surrender(
     466      status = _CORE_mutex_Surrender(
    436467        &the_mutex->Mutex,
    437468        the_mutex->Object.id,
     
    439470      );
    440471      _Thread_Enable_dispatch();
    441       return _Thread_Executing->Wait.return_code; /* XXX return status */
     472      return _POSIX_Mutex_From_core_mutex_status( status );
    442473      break;
    443474  }
Note: See TracChangeset for help on using the changeset viewer.