Hi Philippe,

I never tested my type-based spinlocks in !CONFIG_IPIPE scenarios. Now I
did, and here comes the patch for 2.6.19-1.6-02 that is required - of
course.

Jan
---
 include/linux/spinlock.h       |   36 ++++++++++++++++++------------------
 include/linux/spinlock_types.h |   10 ++++++----
 2 files changed, 24 insertions(+), 22 deletions(-)

Index: linux-2.6.19/include/linux/spinlock_types.h
===================================================================
--- linux-2.6.19.orig/include/linux/spinlock_types.h
+++ linux-2.6.19/include/linux/spinlock_types.h
@@ -33,7 +33,7 @@ typedef struct {
 
 typedef struct {
        raw_spinlock_t __raw_lock;
-} ipipe_spinlock_t;
+} __ipipe_spinlock_t;
 
 #define SPINLOCK_MAGIC         0xdead4ead
 
@@ -91,16 +91,18 @@ typedef struct {
 
 #define SPIN_LOCK_UNLOCKED     __SPIN_LOCK_UNLOCKED(old_style_spin_init)
 #define IPIPE_SPIN_LOCK_UNLOCKED                                       \
-       (ipipe_spinlock_t) {    .__raw_lock = __RAW_SPIN_LOCK_UNLOCKED }
+       (__ipipe_spinlock_t) {  .__raw_lock = __RAW_SPIN_LOCK_UNLOCKED }
 #define RW_LOCK_UNLOCKED       __RW_LOCK_UNLOCKED(old_style_rw_init)
 
 #define DEFINE_SPINLOCK(x)     spinlock_t x = __SPIN_LOCK_UNLOCKED(x)
 #define DEFINE_RWLOCK(x)       rwlock_t x = __RW_LOCK_UNLOCKED(x)
 
 #ifdef CONFIG_IPIPE
-#define IPIPE_DEFINE_SPINLOCK(x) ipipe_spinlock_t x = IPIPE_SPIN_LOCK_UNLOCKED
+# define ipipe_spinlock_t      __ipipe_spinlock_t
+# define IPIPE_DEFINE_SPINLOCK(x) ipipe_spinlock_t x = IPIPE_SPIN_LOCK_UNLOCKED
 #else
-#define IPIPE_DEFINE_SPINLOCK(x) DEFINE_SPINLOCK(x)
+# define ipipe_spinlock_t      spinlock_t
+# define IPIPE_DEFINE_SPINLOCK(x) DEFINE_SPINLOCK(x)
 #endif
 
 #endif /* __LINUX_SPINLOCK_TYPES_H */
Index: linux-2.6.19/include/linux/spinlock.h
===================================================================
--- linux-2.6.19.orig/include/linux/spinlock.h
+++ linux-2.6.19/include/linux/spinlock.h
@@ -177,33 +177,33 @@ do {                                                      
        \
 
 #define PICK_SPINOP(op, lock)                                          \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t))                       \
-               __raw_spin##op(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t))                     \
+               __raw_spin##op(&((__ipipe_spinlock_t *)(lock))->__raw_lock); \
        else if (TYPE_EQUAL(lock, spinlock_t))                          \
                _spin##op((spinlock_t *)(lock));                        \
 } while (0)
 
 #define PICK_SPINOP_RAW(op, lock)                                      \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t))                       \
-               __raw_spin##op(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t))                     \
+               __raw_spin##op(&((__ipipe_spinlock_t *)(lock))->__raw_lock); \
        else if (TYPE_EQUAL(lock, spinlock_t))                          \
                __raw_spin##op(&((spinlock_t *)(lock))->raw_lock);      \
 } while (0)
 
 #define PICK_SPINLOCK_IRQ(lock)                                        \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t)) {                     \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) {                   \
                local_irq_disable_hw();                                 \
-               __raw_spin_lock(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+               __raw_spin_lock(&((__ipipe_spinlock_t *)(lock))->__raw_lock); \
        } else if (TYPE_EQUAL(lock, spinlock_t))                        \
                _spin_lock_irq((spinlock_t *)(lock));                   \
 } while (0)
 
 #define PICK_SPINUNLOCK_IRQ(lock)                                      \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t)) {                     \
-               __raw_spin_unlock(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) {                   \
+               __raw_spin_unlock(&((__ipipe_spinlock_t *)(lock))->__raw_lock); 
\
                local_irq_enable_hw();                                  \
        } else if (TYPE_EQUAL(lock, spinlock_t))                        \
                _spin_unlock_irq((spinlock_t *)(lock));                 \
@@ -211,9 +211,9 @@ do {                                                        
                \
 
 #define PICK_SPINLOCK_IRQ_RAW(lock)                                    \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t)) {                     \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) {                   \
                local_irq_disable_hw();                                 \
-               __raw_spin_lock(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+               __raw_spin_lock(&((__ipipe_spinlock_t *)(lock))->__raw_lock); \
        } else if (TYPE_EQUAL(lock, spinlock_t))                        \
                local_irq_disable();                                    \
                __raw_spin_lock(&((spinlock_t *)(lock))->raw_lock);     \
@@ -221,8 +221,8 @@ do {                                                        
                \
 
 #define PICK_SPINUNLOCK_IRQ_RAW(lock)                          \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t)) {                     \
-               __raw_spin_unlock(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) {                   \
+               __raw_spin_unlock(&((__ipipe_spinlock_t *)(lock))->__raw_lock); 
\
                local_irq_enable_hw();                          \
        } else if (TYPE_EQUAL(lock, spinlock_t))                        \
                __raw_spin_unlock(&((spinlock_t *)(lock))->raw_lock);   \
@@ -234,9 +234,9 @@ extern int __bad_spinlock_type(void);
 
 #define PICK_SPINLOCK_IRQSAVE(lock, flags)                             \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t)) {                     \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) {                   \
                local_irq_save_hw(flags);                               \
-               __raw_spin_lock(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+               __raw_spin_lock(&((__ipipe_spinlock_t *)(lock))->__raw_lock); \
        } else if (TYPE_EQUAL(lock, spinlock_t))                        \
                flags = _spin_lock_irqsave((spinlock_t *)(lock));       \
        else __bad_spinlock_type();                                     \
@@ -244,9 +244,9 @@ do {                                                        
                \
 #else
 #define PICK_SPINLOCK_IRQSAVE(lock, flags)                             \
 do {                                                                   \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t)) {                     \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) {                   \
                local_irq_save_hw(flags);                               \
-               __raw_spin_lock(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+               __raw_spin_lock(&((__ipipe_spinlock_t *)(lock))->__raw_lock); \
        } else if (TYPE_EQUAL(lock, spinlock_t))                        \
                _spin_lock_irqsave((spinlock_t *)(lock), flags);        \
 } while (0)
@@ -254,8 +254,8 @@ do {                                                        
                \
 
 #define PICK_SPINUNLOCK_IRQRESTORE(lock, flags)                        \
        do {                                                            \
-       if (TYPE_EQUAL((lock), ipipe_spinlock_t)) {                     \
-               __raw_spin_unlock(&((ipipe_spinlock_t *)(lock))->__raw_lock); \
+       if (TYPE_EQUAL((lock), __ipipe_spinlock_t)) {                   \
+               __raw_spin_unlock(&((__ipipe_spinlock_t *)(lock))->__raw_lock); 
\
                local_irq_restore_hw(flags);                            \
        } else if (TYPE_EQUAL(lock, spinlock_t))                        \
                _spin_unlock_irqrestore((spinlock_t *)(lock), flags);   \

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to