aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Kaehlcke <matthias.kaehlcke@gmail.com>2007-07-17 07:04:16 -0400
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-07-17 13:23:05 -0400
commit67837f232d6d55be99d6e0dec4ea9bb8112840cd (patch)
tree031713a5ce68712d3df3bab5eafdb52fdd829d04
parent940408289842677cfe9e053a6c423bf3fb922560 (diff)
Use mutex instead of semaphore in CAPI 2.0 driver
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>
-rw-r--r--drivers/isdn/capi/kcapi.c6
-rw-r--r--include/linux/kernelcapi.h2
2 files changed, 4 insertions, 4 deletions
diff --git a/drivers/isdn/capi/kcapi.c b/drivers/isdn/capi/kcapi.c
index 3ed34f7a1c4f..9f73bc2727c2 100644
--- a/drivers/isdn/capi/kcapi.c
+++ b/drivers/isdn/capi/kcapi.c
@@ -258,7 +258,7 @@ static void recv_handler(struct work_struct *work)
258 if ((!ap) || (ap->release_in_progress)) 258 if ((!ap) || (ap->release_in_progress))
259 return; 259 return;
260 260
261 down(&ap->recv_sem); 261 mutex_lock(&ap->recv_mtx);
262 while ((skb = skb_dequeue(&ap->recv_queue))) { 262 while ((skb = skb_dequeue(&ap->recv_queue))) {
263 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_IND) 263 if (CAPIMSG_CMD(skb->data) == CAPI_DATA_B3_IND)
264 ap->nrecvdatapkt++; 264 ap->nrecvdatapkt++;
@@ -267,7 +267,7 @@ static void recv_handler(struct work_struct *work)
267 267
268 ap->recv_message(ap, skb); 268 ap->recv_message(ap, skb);
269 } 269 }
270 up(&ap->recv_sem); 270 mutex_unlock(&ap->recv_mtx);
271} 271}
272 272
273void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb) 273void 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)
547 ap->nsentctlpkt = 0; 547 ap->nsentctlpkt = 0;
548 ap->nsentdatapkt = 0; 548 ap->nsentdatapkt = 0;
549 ap->callback = NULL; 549 ap->callback = NULL;
550 init_MUTEX(&ap->recv_sem); 550 mutex_init(&ap->recv_mtx);
551 skb_queue_head_init(&ap->recv_queue); 551 skb_queue_head_init(&ap->recv_queue);
552 INIT_WORK(&ap->recv_work, recv_handler); 552 INIT_WORK(&ap->recv_work, recv_handler);
553 ap->release_in_progress = 0; 553 ap->release_in_progress = 0;
diff --git a/include/linux/kernelcapi.h b/include/linux/kernelcapi.h
index aea34e74c496..8c4350a9ed87 100644
--- a/include/linux/kernelcapi.h
+++ b/include/linux/kernelcapi.h
@@ -64,7 +64,7 @@ struct capi20_appl {
64 unsigned long nrecvdatapkt; 64 unsigned long nrecvdatapkt;
65 unsigned long nsentctlpkt; 65 unsigned long nsentctlpkt;
66 unsigned long nsentdatapkt; 66 unsigned long nsentdatapkt;
67 struct semaphore recv_sem; 67 struct mutex recv_mtx;
68 struct sk_buff_head recv_queue; 68 struct sk_buff_head recv_queue;
69 struct work_struct recv_work; 69 struct work_struct recv_work;
70 int release_in_progress; 70 int release_in_progress;