RTEMS  5.0.0
rwlockimpl.h
Go to the documentation of this file.
1 
10 /*
11  * COPYRIGHT (c) 1989-2011.
12  * On-Line Applications Research Corporation (OAR).
13  *
14  * The license and distribution terms for this file may be
15  * found in the file LICENSE in this distribution or at
16  * http://www.rtems.org/license/LICENSE.
17  */
18 
19 #ifndef _RTEMS_POSIX_RWLOCKIMPL_H
20 #define _RTEMS_POSIX_RWLOCKIMPL_H
21 
23 
24 #include <errno.h>
25 #include <pthread.h>
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #define POSIX_RWLOCK_MAGIC 0x9621dabdUL
32 
33 typedef struct {
34  unsigned long flags;
35  CORE_RWLock_Control RWLock;
37 
39  pthread_rwlock_t *rwlock
40 )
41 {
42  return (POSIX_RWLock_Control *) rwlock;
43 }
44 
45 bool _POSIX_RWLock_Auto_initialization( POSIX_RWLock_Control *the_rwlock );
46 
47 #define POSIX_RWLOCK_VALIDATE_OBJECT( rw ) \
48  do { \
49  if ( ( rw ) == NULL ) { \
50  return EINVAL; \
51  } \
52  if ( ( (uintptr_t) ( rw ) ^ POSIX_RWLOCK_MAGIC ) != ( rw )->flags ) { \
53  if ( !_POSIX_RWLock_Auto_initialization( rw ) ) { \
54  return EINVAL; \
55  } \
56  } \
57  } while ( 0 )
58 
59 #ifdef __cplusplus
60 }
61 #endif
62 
63 #endif
64 /* end of include file */
Definition: corerwlockimpl.h:74
#define RTEMS_INLINE_ROUTINE
Definition: basedefs.h:65
POSIX Threads Private Support.
Inlined Routines Associated with the SuperCore RWLock.
Definition: rwlockimpl.h:33