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: