source: rtems/cpukit/posix/src/mutexunlock.c @ 874297f3

4.104.114.84.95
Last change on this file since 874297f3 was 874297f3, checked in by Ralf Corsepius <ralf.corsepius@…>, on 04/16/04 at 10:01:03

Remove stray white spaces.

  • Property mode set to 100644
File size: 1.4 KB
Line 
1/*
2 *  $Id$
3 */
4
5#if HAVE_CONFIG_H
6#include "config.h"
7#endif
8
9#include <assert.h>
10#include <errno.h>
11#include <pthread.h>
12
13#include <rtems/system.h>
14#include <rtems/score/coremutex.h>
15#include <rtems/score/watchdog.h>
16#if defined(RTEMS_MULTIPROCESSING)
17#include <rtems/score/mpci.h>
18#endif
19#include <rtems/posix/mutex.h>
20#include <rtems/posix/priority.h>
21#include <rtems/posix/time.h>
22
23/*PAGE
24 *
25 *  11.3.3 Locking and Unlocking a Mutex, P1003.1c/Draft 10, p. 93
26 *
27 *  NOTE: P1003.4b/D8 adds pthread_mutex_timedlock(), p. 29
28 */
29
30int pthread_mutex_unlock(
31  pthread_mutex_t           *mutex
32)
33{
34  register POSIX_Mutex_Control *the_mutex;
35  Objects_Locations             location;
36  CORE_mutex_Status             status;
37
38  the_mutex = _POSIX_Mutex_Get( mutex, &location );
39  switch ( location ) {
40    case OBJECTS_REMOTE:
41#if defined(RTEMS_MULTIPROCESSING)
42      return _POSIX_Mutex_MP_Send_request_packet(
43          POSIX_MUTEX_MP_RELEASE_REQUEST,
44          *mutex,
45          0,                    /* Not used */
46          MPCI_DEFAULT_TIMEOUT
47      );
48#endif
49    case OBJECTS_ERROR:
50      return EINVAL;
51    case OBJECTS_LOCAL:
52      status = _CORE_mutex_Surrender(
53        &the_mutex->Mutex,
54        the_mutex->Object.id,
55#if defined(RTEMS_MULTIPROCESSING)
56        _POSIX_Threads_mutex_MP_support
57#else
58        NULL
59#endif
60      );
61      _Thread_Enable_dispatch();
62      return _POSIX_Mutex_From_core_mutex_status( status );
63      break;
64  }
65  return POSIX_BOTTOM_REACHED();
66}
Note: See TracBrowser for help on using the repository browser.