source: rtems/cpukit/posix/src/pspinunlock.c @ 047d67a

4.104.114.84.95
Last change on this file since 047d67a was 047d67a, checked in by Joel Sherrill <joel.sherrill@…>, on 11/15/06 at 14:08:49

2006-11-15 Joel Sherrill <joel.sherrill@…>

  • libcsupport/src/termios.c, posix/Makefile.am, posix/preinstall.am, posix/include/rtems/posix/config.h, posix/include/rtems/posix/time.h, sapi/src/posixapi.c, score/Makefile.am, score/preinstall.am, score/include/rtems/score/corerwlock.h, score/include/rtems/score/threadq.h, score/src/corerwlockobtainread.c, score/src/threadqenqueue.c, score/src/threadqtimeout.c: Adding POSIX barriers, POSIX spinlocks, and partial implementation of POSIX rwlocks.
  • posix/include/rtems/posix/barrier.h, posix/include/rtems/posix/rwlock.h, posix/include/rtems/posix/spinlock.h, posix/inline/rtems/posix/barrier.inl, posix/inline/rtems/posix/rwlock.inl, posix/inline/rtems/posix/spinlock.inl, posix/src/barrierattrdestroy.c, posix/src/barrierattrgetpshared.c, posix/src/barrierattrinit.c, posix/src/barrierattrsetpshared.c, posix/src/pbarrier.c, posix/src/pbarrierdestroy.c, posix/src/pbarrierinit.c, posix/src/pbarriertranslatereturncode.c, posix/src/pbarrierwait.c, posix/src/prwlock.c, posix/src/prwlockdestroy.c, posix/src/prwlockinit.c, posix/src/prwlockrdlock.c, posix/src/prwlocktimedrdlock.c, posix/src/prwlocktimedwrlock.c, posix/src/prwlocktranslatereturncode.c, posix/src/prwlocktryrdlock.c, posix/src/prwlocktrywrlock.c, posix/src/prwlockunlock.c, posix/src/prwlockwrlock.c, posix/src/pspin.c, posix/src/pspindestroy.c, posix/src/pspininit.c, posix/src/pspinlock.c, posix/src/pspinlocktranslatereturncode.c, posix/src/pspintrylock.c, posix/src/pspinunlock.c, posix/src/rwlockattrdestroy.c, posix/src/rwlockattrgetpshared.c, posix/src/rwlockattrinit.c, posix/src/rwlockattrsetpshared.c: New files.
  • Property mode set to 100644
File size: 1.3 KB
Line 
1/*
2 *  POSIX Spinlock Manager -- Wait at a Spinlock
3 *
4 *  COPYRIGHT (c) 1989-2006.
5 *  On-Line Applications Research Corporation (OAR).
6 *
7 *  The license and distribution terms for this file may be
8 *  found in the file LICENSE in this distribution or at
9 *  http://www.rtems.com/license/LICENSE.
10 *
11 *  $Id$
12 */
13
14#if HAVE_CONFIG_H
15#include "config.h"
16#endif
17
18#include <pthread.h>
19#include <errno.h>
20
21#include <rtems/system.h>
22#include <rtems/posix/spinlock.h>
23
24/*
25 *  pthread_spin_unlock
26 *
27 *  This directive allows a thread to wait at a spinlock.
28 *
29 *  Input parameters:
30 *    spinlock    - spinlock id
31 *
32 *  Output parameters:
33 *    0          - if successful
34 *    error code - if unsuccessful
35 */
36
37int pthread_spin_unlock(
38  pthread_spinlock_t *spinlock
39)
40{
41  POSIX_Spinlock_Control  *the_spinlock = NULL;
42  Objects_Locations        location;
43  CORE_spinlock_Status     status;
44
45  if ( !spinlock )
46    return EINVAL;
47
48  the_spinlock = _POSIX_Spinlock_Get( spinlock, &location );
49  switch ( location ) {
50    case OBJECTS_REMOTE:
51    case OBJECTS_ERROR:
52      return EINVAL;
53
54    case OBJECTS_LOCAL:
55      status = _CORE_spinlock_Release( &the_spinlock->Spinlock );
56      _Thread_Enable_dispatch();
57      return _POSIX_Spinlock_Translate_core_spinlock_return_code( status );
58  }
59  return POSIX_BOTTOM_REACHED();
60}
Note: See TracBrowser for help on using the repository browser.