summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSteven Rostedt <rostedt@goodmis.org>2006-01-09 15:59:26 -0800
committerIngo Molnar <mingo@hera.kernel.org>2006-01-09 15:59:26 -0800
commit3fe0c2776113c24b4b30374003f934cf44280db5 (patch)
tree0b0039205fd82fb7da94370be23e2634757573c1 /drivers
parent906c3b75f6c09b4693a20387aaa6aaa50d327082 (diff)
downloadop-kernel-dev-3fe0c2776113c24b4b30374003f934cf44280db5.zip
op-kernel-dev-3fe0c2776113c24b4b30374003f934cf44280db5.tar.gz
[PATCH] mutex subsystem, semaphore to completion: CPU3WDT
change CPU3WDT semaphores to completions. Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/char/watchdog/cpu5wdt.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/char/watchdog/cpu5wdt.c b/drivers/char/watchdog/cpu5wdt.c
index e75045f..3e8410b 100644
--- a/drivers/char/watchdog/cpu5wdt.c
+++ b/drivers/char/watchdog/cpu5wdt.c
@@ -28,6 +28,7 @@
#include <linux/init.h>
#include <linux/ioport.h>
#include <linux/timer.h>
+#include <linux/completion.h>
#include <linux/jiffies.h>
#include <asm/io.h>
#include <asm/uaccess.h>
@@ -57,7 +58,7 @@ static int ticks = 10000;
/* some device data */
static struct {
- struct semaphore stop;
+ struct completion stop;
volatile int running;
struct timer_list timer;
volatile int queue;
@@ -85,7 +86,7 @@ static void cpu5wdt_trigger(unsigned long unused)
}
else {
/* ticks doesn't matter anyway */
- up(&cpu5wdt_device.stop);
+ complete(&cpu5wdt_device.stop);
}
}
@@ -239,7 +240,7 @@ static int __devinit cpu5wdt_init(void)
if ( !val )
printk(KERN_INFO PFX "sorry, was my fault\n");
- init_MUTEX_LOCKED(&cpu5wdt_device.stop);
+ init_completion(&cpu5wdt_device.stop);
cpu5wdt_device.queue = 0;
clear_bit(0, &cpu5wdt_device.inuse);
@@ -269,7 +270,7 @@ static void __devexit cpu5wdt_exit(void)
{
if ( cpu5wdt_device.queue ) {
cpu5wdt_device.queue = 0;
- down(&cpu5wdt_device.stop);
+ wait_for_completion(&cpu5wdt_device.stop);
}
misc_deregister(&cpu5wdt_misc);
OpenPOWER on IntegriCloud