170af2f8aSWaiman Long #ifndef __ASM_GENERIC_QRWLOCK_TYPES_H
270af2f8aSWaiman Long #define __ASM_GENERIC_QRWLOCK_TYPES_H
370af2f8aSWaiman Long 
470af2f8aSWaiman Long #include <linux/types.h>
570af2f8aSWaiman Long #include <asm/spinlock_types.h>
670af2f8aSWaiman Long 
770af2f8aSWaiman Long /*
870af2f8aSWaiman Long  * The queue read/write lock data structure
970af2f8aSWaiman Long  */
1070af2f8aSWaiman Long 
1170af2f8aSWaiman Long typedef struct qrwlock {
1270af2f8aSWaiman Long 	atomic_t		cnts;
1370af2f8aSWaiman Long 	arch_spinlock_t		lock;
1470af2f8aSWaiman Long } arch_rwlock_t;
1570af2f8aSWaiman Long 
1670af2f8aSWaiman Long #define	__ARCH_RW_LOCK_UNLOCKED {		\
1770af2f8aSWaiman Long 	.cnts = ATOMIC_INIT(0),			\
1870af2f8aSWaiman Long 	.lock = __ARCH_SPIN_LOCK_UNLOCKED,	\
1970af2f8aSWaiman Long }
2070af2f8aSWaiman Long 
2170af2f8aSWaiman Long #endif /* __ASM_GENERIC_QRWLOCK_TYPES_H */
22