Use mutex instead of semaphore in CAPI 2.0 driver
authorMatthias Kaehlcke <matthias.kaehlcke@gmail.com>
Tue, 17 Jul 2007 11:04:16 +0000 (04:04 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 17 Jul 2007 17:23:05 +0000 (10:23 -0700)
The CAPI 2.0 driver uses a semaphore as mutex.  Use the mutex API instead of
the (binary) semaphore.

Signed-off-by: Matthias Kaehlcke <matthias.kaehlcke@gmail.com>
Acked-by: Karsten Keil <kkeil@suse.de>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
drivers/isdn/capi/kcapi.c
include/linux/kernelcapi.h

index 3ed34f7a1c4ff3ff79d209838c58eba860e5be60..9f73bc2727c29f8d8fe393b9fbd8faa37af2218a 100644 (file)
@@ -258,7 +258,7 @@ static void recv_handler(struct work_struct *work)
        if ((!ap) || (ap->release_in_progress))
                return;
 
-       down(&ap->recv_sem);
+       mutex_lock(&ap->recv_mtx);
        while ((skb = skb_dequeue(&ap->recv_queue))) {
                if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_IND)
                        ap->nrecvdatapkt++;
@@ -267,7 +267,7 @@ static void recv_handler(struct work_struct *work)
 
                ap->recv_message(ap, skb);
        }
-       up(&ap->recv_sem);
+       mutex_unlock(&ap->recv_mtx);
 }
 
 void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb)
@@ -547,7 +547,7 @@ u16 capi20_register(struct capi20_appl *ap)
        ap->nsentctlpkt = 0;
        ap->nsentdatapkt = 0;
        ap->callback = NULL;
-       init_MUTEX(&ap->recv_sem);
+       mutex_init(&ap->recv_mtx);
        skb_queue_head_init(&ap->recv_queue);
        INIT_WORK(&ap->recv_work, recv_handler);
        ap->release_in_progress = 0;
index aea34e74c49699ecb3f7ee963a7757a08415bc8e..8c4350a9ed87c40a78709045821dbff46b2a760e 100644 (file)
@@ -64,7 +64,7 @@ struct capi20_appl {
        unsigned long nrecvdatapkt;
        unsigned long nsentctlpkt;
        unsigned long nsentdatapkt;
-       struct semaphore recv_sem;
+       struct mutex recv_mtx;
        struct sk_buff_head recv_queue;
        struct work_struct recv_work;
        int release_in_progress;