H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 1 | #ifndef _ASM_X86_SPINLOCK_TYPES_H |
| 2 | #define _ASM_X86_SPINLOCK_TYPES_H |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 3 | |
| 4 | #ifndef __LINUX_SPINLOCK_TYPES_H |
| 5 | # error "please don't include this file directly" |
| 6 | #endif |
| 7 | |
Jeremy Fitzhardinge | 84eb950 | 2010-07-02 23:26:36 +0100 | [diff] [blame] | 8 | #include <linux/types.h> |
| 9 | |
| 10 | #if (CONFIG_NR_CPUS < 256) |
| 11 | typedef u8 __ticket_t; |
Jeremy Fitzhardinge | 229855d | 2010-07-13 15:14:26 -0700 | [diff] [blame] | 12 | typedef u16 __ticketpair_t; |
Jeremy Fitzhardinge | 84eb950 | 2010-07-02 23:26:36 +0100 | [diff] [blame] | 13 | #else |
| 14 | typedef u16 __ticket_t; |
Jeremy Fitzhardinge | 229855d | 2010-07-13 15:14:26 -0700 | [diff] [blame] | 15 | typedef u32 __ticketpair_t; |
Jeremy Fitzhardinge | 84eb950 | 2010-07-02 23:26:36 +0100 | [diff] [blame] | 16 | #endif |
| 17 | |
| 18 | #define TICKET_SHIFT (sizeof(__ticket_t) * 8) |
| 19 | #define TICKET_MASK ((__ticket_t)((1 << TICKET_SHIFT) - 1)) |
| 20 | |
Thomas Gleixner | 445c895 | 2009-12-02 19:49:50 +0100 | [diff] [blame] | 21 | typedef struct arch_spinlock { |
Jeremy Fitzhardinge | 84eb950 | 2010-07-02 23:26:36 +0100 | [diff] [blame] | 22 | union { |
Jeremy Fitzhardinge | 229855d | 2010-07-13 15:14:26 -0700 | [diff] [blame] | 23 | __ticketpair_t head_tail; |
Jeremy Fitzhardinge | 84eb950 | 2010-07-02 23:26:36 +0100 | [diff] [blame] | 24 | struct __raw_tickets { |
| 25 | __ticket_t head, tail; |
| 26 | } tickets; |
| 27 | }; |
Thomas Gleixner | 445c895 | 2009-12-02 19:49:50 +0100 | [diff] [blame] | 28 | } arch_spinlock_t; |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 29 | |
Jeremy Fitzhardinge | 229855d | 2010-07-13 15:14:26 -0700 | [diff] [blame] | 30 | #define __ARCH_SPIN_LOCK_UNLOCKED { { 0 } } |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 31 | |
Jan Beulich | a750036 | 2011-07-19 13:00:45 +0100 | [diff] [blame] | 32 | #include <asm/rwlock.h> |
Ingo Molnar | fb1c8f9 | 2005-09-10 00:25:56 -0700 | [diff] [blame] | 33 | |
H. Peter Anvin | 1965aae | 2008-10-22 22:26:29 -0700 | [diff] [blame] | 34 | #endif /* _ASM_X86_SPINLOCK_TYPES_H */ |