spinlock_types.h
上传用户:szlgq88
上传日期:2009-04-28
资源大小:48287k
文件大小:2k
- #ifndef __LINUX_SPINLOCK_TYPES_H
- #define __LINUX_SPINLOCK_TYPES_H
- /*
- * include/linux/spinlock_types.h - generic spinlock type definitions
- * and initializers
- *
- * portions Copyright 2005, Red Hat, Inc., Ingo Molnar
- * Released under the General Public License (GPL).
- */
- #if defined(CONFIG_SMP)
- # include <asm/spinlock_types.h>
- #else
- # include <linux/spinlock_types_up.h>
- #endif
- typedef struct {
- raw_spinlock_t raw_lock;
- #if defined(CONFIG_PREEMPT) && defined(CONFIG_SMP)
- unsigned int break_lock;
- #endif
- #ifdef CONFIG_DEBUG_SPINLOCK
- unsigned int magic, owner_cpu;
- void *owner;
- #endif
- } spinlock_t;
- #define SPINLOCK_MAGIC 0xdead4ead
- typedef struct {
- raw_rwlock_t raw_lock;
- #if defined(CONFIG_PREEMPT) && defined(CONFIG_SMP)
- unsigned int break_lock;
- #endif
- #ifdef CONFIG_DEBUG_SPINLOCK
- unsigned int magic, owner_cpu;
- void *owner;
- #endif
- } rwlock_t;
- #define RWLOCK_MAGIC 0xdeaf1eed
- #define SPINLOCK_OWNER_INIT ((void *)-1L)
- #ifdef CONFIG_DEBUG_SPINLOCK
- # define SPIN_LOCK_UNLOCKED
- (spinlock_t) { .raw_lock = __RAW_SPIN_LOCK_UNLOCKED,
- .magic = SPINLOCK_MAGIC,
- .owner = SPINLOCK_OWNER_INIT,
- .owner_cpu = -1 }
- #define RW_LOCK_UNLOCKED
- (rwlock_t) { .raw_lock = __RAW_RW_LOCK_UNLOCKED,
- .magic = RWLOCK_MAGIC,
- .owner = SPINLOCK_OWNER_INIT,
- .owner_cpu = -1 }
- #else
- # define SPIN_LOCK_UNLOCKED
- (spinlock_t) { .raw_lock = __RAW_SPIN_LOCK_UNLOCKED }
- #define RW_LOCK_UNLOCKED
- (rwlock_t) { .raw_lock = __RAW_RW_LOCK_UNLOCKED }
- #endif
- #define DEFINE_SPINLOCK(x) spinlock_t x = SPIN_LOCK_UNLOCKED
- #define DEFINE_RWLOCK(x) rwlock_t x = RW_LOCK_UNLOCKED
- #endif /* __LINUX_SPINLOCK_TYPES_H */