[PATCH -rt 8/9] spinlocks/rwlocks: use PICK_FUNCTION()

2007-07-29 Thread Daniel Walker
Reaplace old PICK_OP style macros with the new PICK_FUNCTION macro.

Signed-off-by: Daniel Walker <[EMAIL PROTECTED]>

---
 include/linux/sched.h|   13 -
 include/linux/spinlock.h |  345 ++-
 kernel/rtmutex.c |2 
 lib/dec_and_lock.c   |2 
 4 files changed, 111 insertions(+), 251 deletions(-)

Index: linux-2.6.22/include/linux/sched.h
===
--- linux-2.6.22.orig/include/linux/sched.h
+++ linux-2.6.22/include/linux/sched.h
@@ -1997,17 +1997,8 @@ extern int __cond_resched_raw_spinlock(r
 extern int __cond_resched_spinlock(spinlock_t *spinlock);
 
 #define cond_resched_lock(lock) \
-({ \
-   int __ret;  \
-   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __ret = __cond_resched_raw_spinlock((raw_spinlock_t *)lock);\
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   __ret = __cond_resched_spinlock((spinlock_t *)lock); \
-   else __ret = __bad_spinlock_type(); \
-   \
-   __ret;  \
-})
+   PICK_SPIN_OP_RET(__cond_resched_raw_spinlock, __cond_resched_spinlock,\
+lock)
 
 extern int cond_resched_softirq(void);
 extern int cond_resched_softirq_context(void);
Index: linux-2.6.22/include/linux/spinlock.h
===
--- linux-2.6.22.orig/include/linux/spinlock.h
+++ linux-2.6.22/include/linux/spinlock.h
@@ -91,6 +91,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 
@@ -162,7 +163,7 @@ extern void __lockfunc rt_spin_unlock_wa
 extern int __lockfunc
 rt_spin_trylock_irqsave(spinlock_t *lock, unsigned long *flags);
 extern int __lockfunc rt_spin_trylock(spinlock_t *lock);
-extern int _atomic_dec_and_spin_lock(atomic_t *atomic, spinlock_t *lock);
+extern int _atomic_dec_and_spin_lock(spinlock_t *lock, atomic_t *atomic);
 
 /*
  * lockdep-less calls, for derived types like rwlock:
@@ -243,54 +244,6 @@ do {   
\
 #  define _spin_trylock_irqsave(l,f)   TSNBCONRT(l)
 #endif
 
-#undef TYPE_EQUAL
-#define TYPE_EQUAL(lock, type) \
-   __builtin_types_compatible_p(typeof(lock), type *)
-
-#define PICK_OP(op, lock)  \
-do {   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __spin##op((raw_spinlock_t *)(lock));   \
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   _spin##op((spinlock_t *)(lock));\
-   else __bad_spinlock_type(); \
-} while (0)
-
-#define PICK_OP_RET(op, lock...)   \
-({ \
-   unsigned long __ret;\
-   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __ret = __spin##op((raw_spinlock_t *)(lock));   \
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   __ret = _spin##op((spinlock_t *)(lock));\
-   else __ret = __bad_spinlock_type(); \
-   \
-   __ret;  \
-})
-
-#define PICK_OP2(op, lock, flags)  \
-do {   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __spin##op((raw_spinlock_t *)(lock), flags);\
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   _spin##op((spinlock_t *)(lock), flags); \
-   else __bad_spinlock_type(); \
-} while (0)
-
-#define PICK_OP2_RET(op, lock, flags)  \
-({ \
-   unsigned long __ret;\
-   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __ret = __spin##op((raw_spinlock_t *)(lock), flags);\
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   __ret = 

[PATCH -rt 8/9] spinlocks/rwlocks: use PICK_FUNCTION()

2007-07-29 Thread Daniel Walker
Reaplace old PICK_OP style macros with the new PICK_FUNCTION macro.

Signed-off-by: Daniel Walker [EMAIL PROTECTED]

---
 include/linux/sched.h|   13 -
 include/linux/spinlock.h |  345 ++-
 kernel/rtmutex.c |2 
 lib/dec_and_lock.c   |2 
 4 files changed, 111 insertions(+), 251 deletions(-)

Index: linux-2.6.22/include/linux/sched.h
===
--- linux-2.6.22.orig/include/linux/sched.h
+++ linux-2.6.22/include/linux/sched.h
@@ -1997,17 +1997,8 @@ extern int __cond_resched_raw_spinlock(r
 extern int __cond_resched_spinlock(spinlock_t *spinlock);
 
 #define cond_resched_lock(lock) \
-({ \
-   int __ret;  \
-   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __ret = __cond_resched_raw_spinlock((raw_spinlock_t *)lock);\
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   __ret = __cond_resched_spinlock((spinlock_t *)lock); \
-   else __ret = __bad_spinlock_type(); \
-   \
-   __ret;  \
-})
+   PICK_SPIN_OP_RET(__cond_resched_raw_spinlock, __cond_resched_spinlock,\
+lock)
 
 extern int cond_resched_softirq(void);
 extern int cond_resched_softirq_context(void);
Index: linux-2.6.22/include/linux/spinlock.h
===
--- linux-2.6.22.orig/include/linux/spinlock.h
+++ linux-2.6.22/include/linux/spinlock.h
@@ -91,6 +91,7 @@
 #include linux/stringify.h
 #include linux/bottom_half.h
 #include linux/irqflags.h
+#include linux/pickop.h
 
 #include asm/system.h
 
@@ -162,7 +163,7 @@ extern void __lockfunc rt_spin_unlock_wa
 extern int __lockfunc
 rt_spin_trylock_irqsave(spinlock_t *lock, unsigned long *flags);
 extern int __lockfunc rt_spin_trylock(spinlock_t *lock);
-extern int _atomic_dec_and_spin_lock(atomic_t *atomic, spinlock_t *lock);
+extern int _atomic_dec_and_spin_lock(spinlock_t *lock, atomic_t *atomic);
 
 /*
  * lockdep-less calls, for derived types like rwlock:
@@ -243,54 +244,6 @@ do {   
\
 #  define _spin_trylock_irqsave(l,f)   TSNBCONRT(l)
 #endif
 
-#undef TYPE_EQUAL
-#define TYPE_EQUAL(lock, type) \
-   __builtin_types_compatible_p(typeof(lock), type *)
-
-#define PICK_OP(op, lock)  \
-do {   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __spin##op((raw_spinlock_t *)(lock));   \
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   _spin##op((spinlock_t *)(lock));\
-   else __bad_spinlock_type(); \
-} while (0)
-
-#define PICK_OP_RET(op, lock...)   \
-({ \
-   unsigned long __ret;\
-   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __ret = __spin##op((raw_spinlock_t *)(lock));   \
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   __ret = _spin##op((spinlock_t *)(lock));\
-   else __ret = __bad_spinlock_type(); \
-   \
-   __ret;  \
-})
-
-#define PICK_OP2(op, lock, flags)  \
-do {   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __spin##op((raw_spinlock_t *)(lock), flags);\
-   else if (TYPE_EQUAL(lock, spinlock_t))  \
-   _spin##op((spinlock_t *)(lock), flags); \
-   else __bad_spinlock_type(); \
-} while (0)
-
-#define PICK_OP2_RET(op, lock, flags)  \
-({ \
-   unsigned long __ret;\
-   \
-   if (TYPE_EQUAL((lock), raw_spinlock_t)) \
-   __ret = __spin##op((raw_spinlock_t *)(lock), flags);\
-   else if (TYPE_EQUAL(lock,