On 11/13/2010 01:57 AM, Américo Wang wrote:
On Wed, Nov 03, 2010 at 10:59:42AM -0400, Jeremy Fitzhardinge wrote:
...
static __always_inline void __ticket_spin_lock(arch_spinlock_t *lock)
{
-int inc = 0x0001;
-int tmp;
+unsigned inc = 1 TICKET_SHIFT;
+unsigned tmp;
Please don't use old implicit-int.
I don't mind much either way, but I don't think I've seen anyone worry
about this before.
-return (((tmp TICKET_SHIFT) - tmp) ((1 TICKET_SHIFT) - 1)) 1;
+return ((tmp.tail - tmp.head) TICKET_MASK) 1;
There is a type promotion here.
...
}
#ifndef CONFIG_PARAVIRT_SPINLOCKS
diff --git a/arch/x86/include/asm/spinlock_types.h
b/arch/x86/include/asm/spinlock_types.h
index dcb48b2..4582640 100644
--- a/arch/x86/include/asm/spinlock_types.h
+++ b/arch/x86/include/asm/spinlock_types.h
@@ -5,11 +5,27 @@
# error please don't include this file directly
#endif
+#include linux/types.h
+
+#if (CONFIG_NR_CPUS 256)
+typedef u8 __ticket_t;
+#else
+typedef u16 __ticket_t;
+#endif
+
+#define TICKET_SHIFT(sizeof(__ticket_t) * 8)
+#define TICKET_MASK ((1 TICKET_SHIFT) - 1)
So here you may need to cast the result to __ticket_t.
OK.
J
___
Virtualization mailing list
Virtualization@lists.linux-foundation.org
https://lists.linux-foundation.org/mailman/listinfo/virtualization