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

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

Remove stray white spaces.

  • Property mode set to 100644
File size: 1.5 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 *  _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;
39  ISR_Level                     level;
40
41  the_mutex = _POSIX_Mutex_Get_interrupt_disable( mutex, &location, &level );
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,
59        timeout,
60        level
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.