OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [rtems-20020807/] [cpukit/] [posix/] [src/] [mutexunlock.c] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1026 ivang
/*
2
 *  mutexunlock.c,v 1.3 2001/01/24 14:17:28 joel Exp
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
 
30
int 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
}

powered by: WebSVN 2.1.0

© copyright 1999-2025 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.