bump release number
[linux-2.6.git] / include / asm-ia64 / semaphore.h
index 44165a6..f483eeb 100644 (file)
@@ -15,25 +15,15 @@ struct semaphore {
        atomic_t count;
        int sleepers;
        wait_queue_head_t wait;
-#if WAITQUEUE_DEBUG
-       long __magic;           /* initialized by __SEM_DEBUG_INIT() */
-#endif
 };
 
-#if WAITQUEUE_DEBUG
-# define __SEM_DEBUG_INIT(name)                , (long) &(name).__magic
-#else
-# define __SEM_DEBUG_INIT(name)
-#endif
-
-#define __SEMAPHORE_INITIALIZER(name,count)                                    \
-{                                                                              \
-       ATOMIC_INIT(count), 0, __WAIT_QUEUE_HEAD_INITIALIZER((name).wait)       \
-       __SEM_DEBUG_INIT(name)                                                  \
+#define __SEMAPHORE_INITIALIZER(name, n)                               \
+{                                                                      \
+       .count          = ATOMIC_INIT(n),                               \
+       .sleepers       = 0,                                            \
+       .wait           = __WAIT_QUEUE_HEAD_INITIALIZER((name).wait)    \
 }
 
-#define __MUTEX_INITIALIZER(name)      __SEMAPHORE_INITIALIZER(name,1)
-
 #define __DECLARE_SEMAPHORE_GENERIC(name,count)                                        \
        struct semaphore name = __SEMAPHORE_INITIALIZER(name, count)
 
@@ -70,11 +60,8 @@ extern void __up (struct semaphore * sem);
 static inline void
 down (struct semaphore *sem)
 {
-#if WAITQUEUE_DEBUG
-       CHECK_MAGIC(sem->__magic);
-#endif
        might_sleep();
-       if (atomic_dec_return(&sem->count) < 0)
+       if (ia64_fetchadd(-1, &sem->count.counter, acq) < 1)
                __down(sem);
 }
 
@@ -87,11 +74,8 @@ down_interruptible (struct semaphore * sem)
 {
        int ret = 0;
 
-#if WAITQUEUE_DEBUG
-       CHECK_MAGIC(sem->__magic);
-#endif
        might_sleep();
-       if (atomic_dec_return(&sem->count) < 0)
+       if (ia64_fetchadd(-1, &sem->count.counter, acq) < 1)
                ret = __down_interruptible(sem);
        return ret;
 }
@@ -101,10 +85,7 @@ down_trylock (struct semaphore *sem)
 {
        int ret = 0;
 
-#if WAITQUEUE_DEBUG
-       CHECK_MAGIC(sem->__magic);
-#endif
-       if (atomic_dec_return(&sem->count) < 0)
+       if (ia64_fetchadd(-1, &sem->count.counter, acq) < 1)
                ret = __down_trylock(sem);
        return ret;
 }
@@ -112,10 +93,7 @@ down_trylock (struct semaphore *sem)
 static inline void
 up (struct semaphore * sem)
 {
-#if WAITQUEUE_DEBUG
-       CHECK_MAGIC(sem->__magic);
-#endif
-       if (atomic_inc_return(&sem->count) <= 0)
+       if (ia64_fetchadd(1, &sem->count.counter, rel) <= -1)
                __up(sem);
 }