1 #ifndef _ASM_X86_SPINLOCK_TYPES_H
2 #define _ASM_X86_SPINLOCK_TYPES_H
3 
4 #ifndef __LINUX_SPINLOCK_TYPES_H
5 # error "please don't include this file directly"
6 #endif
7 
8 #include <linux/types.h>
9 
10 #if (CONFIG_NR_CPUS < 256)
11 typedef u8  __ticket_t;
12 #else
13 typedef u16 __ticket_t;
14 #endif
15 
16 #define TICKET_SHIFT	(sizeof(__ticket_t) * 8)
17 #define TICKET_MASK	((__ticket_t)((1 << TICKET_SHIFT) - 1))
18 
19 typedef struct arch_spinlock {
20 	union {
21 		unsigned int slock;
22 		struct __raw_tickets {
23 			__ticket_t head, tail;
24 		} tickets;
25 	};
26 } arch_spinlock_t;
27 
28 #define __ARCH_SPIN_LOCK_UNLOCKED	{ { .slock = 0 } }
29 
30 #include <asm/rwlock.h>
31 
32 #endif /* _ASM_X86_SPINLOCK_TYPES_H */
33