File: /Users/paulross/dev/linux/linux-3.13/include/linux/rwlock_types.h

Green shading in the line number column means the source is part of the translation unit, red means it is conditionally excluded. Highlighted line numbers link to the translation unit page. Highlighted macros link to the macro page.

       1: #ifndef __LINUX_RWLOCK_TYPES_H
       2: #define __LINUX_RWLOCK_TYPES_H
       3: 
       4: /*
       5:  * include/linux/rwlock_types.h - generic rwlock type definitions
       6:  *                  and initializers
       7:  *
       8:  * portions Copyright 2005, Red Hat, Inc., Ingo Molnar
       9:  * Released under the General Public License (GPL).
      10:  */
      11: typedef struct {
      12:     arch_rwlock_t raw_lock;
      13: #ifdef CONFIG_GENERIC_LOCKBREAK
      14:     unsigned int break_lock;
      15: #endif
      16: #ifdef CONFIG_DEBUG_SPINLOCK
      17:     unsigned int magic, owner_cpu;
      18:     void *owner;
      19: #endif
      20: #ifdef CONFIG_DEBUG_LOCK_ALLOC
      21:     struct lockdep_map dep_map;
      22: #endif
      23: } rwlock_t;
      24: 
      25: #define RWLOCK_MAGIC        0xdeaf1eed
      26: 
      27: #ifdef CONFIG_DEBUG_LOCK_ALLOC
      28: # define RW_DEP_MAP_INIT(lockname)    .dep_map = { .name = #lockname }
      29: #else
      30: # define RW_DEP_MAP_INIT(lockname)
      31: #endif
      32: 
      33: #ifdef CONFIG_DEBUG_SPINLOCK
      34: #define __RW_LOCK_UNLOCKED(lockname)                    \
      35:     (rwlock_t)    {    .raw_lock = __ARCH_RW_LOCK_UNLOCKED,    \
      36:                 .magic = RWLOCK_MAGIC,            \
      37:                 .owner = SPINLOCK_OWNER_INIT,        \
      38:                 .owner_cpu = -1,            \
      39:                 RW_DEP_MAP_INIT(lockname) }
      40: #else
      41: #define __RW_LOCK_UNLOCKED(lockname) \
      42:     (rwlock_t)    {    .raw_lock = __ARCH_RW_LOCK_UNLOCKED,    \
      43:                 RW_DEP_MAP_INIT(lockname) }
      44: #endif
      45: 
      46: #define DEFINE_RWLOCK(x)    rwlock_t x = __RW_LOCK_UNLOCKED(x)
      47: 
      48: #endif /* __LINUX_RWLOCK_TYPES_H */
      49: