source: rtems/c/src/exec/posix/inline/rtems/posix/mutex.inl @ 03f2154e

4.104.114.84.95
Last change on this file since 03f2154e was 03f2154e, checked in by Joel Sherrill <joel.sherrill@…>, on 04/22/97 at 17:20:27

headers updated to reflect new style copyright notice as part
of switching to the modified GNU GPL.

  • Property mode set to 100644
File size: 1.7 KB
Line 
1/*  rtems/posix/mutex.inl
2 *
3 *  This include file contains the static inline implementation of the private
4 *  inlined routines for POSIX mutex's.
5 *
6 *  COPYRIGHT (c) 1989-1997.
7 *  On-Line Applications Research Corporation (OAR).
8 *  Copyright assigned to U.S. Government, 1994.
9 *
10 *  The license and distribution terms for this file may in
11 *  the file LICENSE in this distribution or at
12 *  http://www.OARcorp.com/rtems/license.html.
13 *
14 *  $Id$
15 */
16 
17#ifndef __RTEMS_POSIX_MUTEX_inl
18#define __RTEMS_POSIX_MUTEX_inl
19 
20/*PAGE
21 *
22 *  _POSIX_Mutex_Allocate
23 */
24 
25RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Allocate( void )
26{
27  return (POSIX_Mutex_Control *) _Objects_Allocate( &_POSIX_Mutex_Information );
28}
29 
30/*PAGE
31 *
32 *  _POSIX_Mutex_Free
33 */
34 
35RTEMS_INLINE_ROUTINE void _POSIX_Mutex_Free (
36  POSIX_Mutex_Control *the_mutex
37)
38{
39  _Objects_Free( &_POSIX_Mutex_Information, &the_mutex->Object );
40}
41 
42/*PAGE
43 *
44 *  _POSIX_Mutex_Get
45 */
46 
47RTEMS_INLINE_ROUTINE POSIX_Mutex_Control *_POSIX_Mutex_Get (
48  Objects_Id        *id,
49  Objects_Locations *location
50)
51{
52  int status;
53
54  if ( !id ) {
55    *location = OBJECTS_ERROR;
56    return (POSIX_Mutex_Control *) 0;
57  }
58
59  if ( *id == PTHREAD_MUTEX_INITIALIZER ) {
60    /*
61     *  Do an "auto-create" here.
62     */
63
64    status = pthread_mutex_init( id, 0 );
65    if ( status ) {
66      *location = OBJECTS_ERROR;
67      return (POSIX_Mutex_Control *) 0;
68    }
69  }
70
71  /*
72   *  Now call Objects_Get()
73   */
74
75  return (POSIX_Mutex_Control *)
76    _Objects_Get( &_POSIX_Mutex_Information, *id, location );
77}
78 
79/*PAGE
80 *
81 *  _POSIX_Mutex_Is_null
82 */
83 
84RTEMS_INLINE_ROUTINE boolean _POSIX_Mutex_Is_null (
85  POSIX_Mutex_Control *the_mutex
86)
87{
88  return !the_mutex;
89}
90
91#endif
92/*  end of include file */
93
Note: See TracBrowser for help on using the repository browser.