source: rtems/cpukit/posix/src/mutexlocksupp.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.5 KB
RevLine 
[96c041c]1/*
2 *  $Id$
3 */
4
[f42b726]5#if HAVE_CONFIG_H
6#include "config.h"
7#endif
8
[96c041c]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 *  _POSIX_Mutex_Lock_support
26 *
27 *  A support routine which implements guts of the blocking, non-blocking, and
28 *  timed wait version of mutex lock.
29 */
30
31int _POSIX_Mutex_Lock_support(
32  pthread_mutex_t           *mutex,
33  boolean                    blocking,
34  Watchdog_Interval          timeout
35)
36{
37  register POSIX_Mutex_Control *the_mutex;
38  Objects_Locations             location;
[1b7e8c51]39  ISR_Level                     level;
[874297f3]40
[1b7e8c51]41  the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level );
[96c041c]42  switch ( location ) {
43    case OBJECTS_REMOTE:
44#if defined(RTEMS_MULTIPROCESSING)
45      return _POSIX_Mutex_MP_Send_request_packet(
46          POSIX_MUTEX_MP_OBTAIN_REQUEST,
47          *mutex,
48          0,   /* must define the option set */
49          WATCHDOG_NO_TIMEOUT
50      );
51#endif
52    case OBJECTS_ERROR:
53      return EINVAL;
54    case OBJECTS_LOCAL:
55      _CORE_mutex_Seize(
56        &the_mutex->Mutex,
57        the_mutex->Object.id,
58        blocking,
[1b7e8c51]59        timeout,
60        level
[96c041c]61      );
62      return _POSIX_Mutex_From_core_mutex_status(
63        (CORE_mutex_Status) _Thread_Executing->Wait.return_code
64      );
65  }
66  return POSIX_BOTTOM_REACHED();
67}
Note: See TracBrowser for help on using the repository browser.