123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #ifndef __LINUX_RWLOCK_TYPES_H
- #define __LINUX_RWLOCK_TYPES_H
- /*
- * include/linux/rwlock_types.h - generic rwlock type definitions
- * and initializers
- *
- * portions Copyright 2005, Red Hat, Inc., Ingo Molnar
- * Released under the General Public License (GPL).
- */
- typedef struct {
- arch_rwlock_t raw_lock;
- #ifdef CONFIG_GENERIC_LOCKBREAK
- unsigned int break_lock;
- #endif
- #ifdef CONFIG_DEBUG_SPINLOCK
- unsigned int magic, owner_cpu;
- void *owner;
- #endif
- #ifdef CONFIG_DEBUG_LOCK_ALLOC
- struct lockdep_map dep_map;
- #endif
- } rwlock_t;
- #define RWLOCK_MAGIC 0xdeaf1eed
- #ifdef CONFIG_DEBUG_LOCK_ALLOC
- # define RW_DEP_MAP_INIT(lockname) .dep_map = { .name = #lockname }
- #else
- # define RW_DEP_MAP_INIT(lockname)
- #endif
- #ifdef CONFIG_DEBUG_SPINLOCK
- #define __RW_LOCK_UNLOCKED(lockname) \
- (rwlock_t) { .raw_lock = __ARCH_RW_LOCK_UNLOCKED, \
- .magic = RWLOCK_MAGIC, \
- .owner = SPINLOCK_OWNER_INIT, \
- .owner_cpu = -1, \
- RW_DEP_MAP_INIT(lockname) }
- #else
- #define __RW_LOCK_UNLOCKED(lockname) \
- (rwlock_t) { .raw_lock = __ARCH_RW_LOCK_UNLOCKED, \
- RW_DEP_MAP_INIT(lockname) }
- #endif
- #define DEFINE_RWLOCK(x) rwlock_t x = __RW_LOCK_UNLOCKED(x)
- #endif /* __LINUX_RWLOCK_TYPES_H */
|