1 #ifndef __ASM_SPINLOCK_TYPES_H 2 #define __ASM_SPINLOCK_TYPES_H 3 4 #ifndef __LINUX_SPINLOCK_TYPES_H 5 # error "please don't include this file directly" 6 #endif 7 8 #define TICKET_SHIFT 16 9 10 typedef struct { 11 union { 12 u32 slock; 13 struct __raw_tickets { 14 #ifdef __ARMEB__ 15 u16 next; 16 u16 owner; 17 #else 18 u16 owner; 19 u16 next; 20 #endif 21 } tickets; 22 }; 23 } arch_spinlock_t; 24 25 #define __ARCH_SPIN_LOCK_UNLOCKED { { 0 } } 26 27 typedef struct { 28 u32 lock; 29 } arch_rwlock_t; 30 31 #define __ARCH_RW_LOCK_UNLOCKED { 0 } 32 33 #endif 34