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

4.104.114.84.95
Last change on this file since b91726f was c7a9c66, checked in by Joel Sherrill <joel.sherrill@…>, on 08/12/96 at 18:06:27

_POSIX_Mutex_Get: made null id an error

  • Property mode set to 100644
File size: 1.8 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, 1990, 1991, 1992, 1993, 1994.
7 *  On-Line Applications Research Corporation (OAR).
8 *  All rights assigned to U.S. Government, 1994.
9 *
10 *  This material may be reproduced by or for the U.S. Government pursuant
11 *  to the copyright license under the clause at DFARS 252.227-7013.  This
12 *  notice must appear in all copies of this file and its derivatives.
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.