From: Alan Cox <alan@lxorguk.ukuu.org.uk>
To: akpm@osdl.org, linux-kernel@vger.kernel.org, wim@iguana.be
Subject: [PATCH 24/57] machzwd: clean up, coding style, unlocked_ioctl
Date: Mon, 19 May 2008 14:06:59 +0100 [thread overview]
Message-ID: <20080519130658.31722.30943.stgit@core> (raw)
In-Reply-To: <20080519124659.31722.51847.stgit@core>
From: Alan Cox <alan@redhat.com>
---
drivers/watchdog/machzwd.c | 108 ++++++++++++++++----------------------------
1 files changed, 40 insertions(+), 68 deletions(-)
diff --git a/drivers/watchdog/machzwd.c b/drivers/watchdog/machzwd.c
index 6905135..2dfc275 100644
--- a/drivers/watchdog/machzwd.c
+++ b/drivers/watchdog/machzwd.c
@@ -40,9 +40,9 @@
#include <linux/notifier.h>
#include <linux/reboot.h>
#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/uaccess.h>
-#include <asm/io.h>
-#include <asm/uaccess.h>
#include <asm/system.h>
/* ports */
@@ -95,7 +95,9 @@ MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
static int nowayout = WATCHDOG_NOWAYOUT;
module_param(nowayout, int, 0);
-MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=" __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
+MODULE_PARM_DESC(nowayout,
+ "Watchdog cannot be stopped once started (default="
+ __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
#define PFX "machzwd"
@@ -114,7 +116,7 @@ static struct watchdog_info zf_info = {
* 3 = GEN_SCI
* defaults to GEN_RESET (0)
*/
-static int action = 0;
+static int action;
module_param(action, int, 0);
MODULE_PARM_DESC(action, "after watchdog resets, generate: 0 = RESET(*) 1 = SMI 2 = NMI 3 = SCI");
@@ -123,10 +125,9 @@ static void zf_ping(unsigned long data);
static int zf_action = GEN_RESET;
static unsigned long zf_is_open;
static char zf_expect_close;
-static DEFINE_SPINLOCK(zf_lock);
static DEFINE_SPINLOCK(zf_port_lock);
static DEFINE_TIMER(zf_timer, zf_ping, 0, 0);
-static unsigned long next_heartbeat = 0;
+static unsigned long next_heartbeat;
/* timeout for user land heart beat (10 seconds) */
@@ -171,13 +172,13 @@ static inline void zf_set_control(unsigned short new)
static inline void zf_set_timer(unsigned short new, unsigned char n)
{
- switch(n){
- case WD1:
- zf_writew(COUNTER_1, new);
- case WD2:
- zf_writeb(COUNTER_2, new > 0xff ? 0xff : new);
- default:
- return;
+ switch (n) {
+ case WD1:
+ zf_writew(COUNTER_1, new);
+ case WD2:
+ zf_writeb(COUNTER_2, new > 0xff ? 0xff : new);
+ default:
+ return;
}
}
@@ -241,10 +242,8 @@ static void zf_ping(unsigned long data)
zf_writeb(COUNTER_2, 0xff);
- if(time_before(jiffies, next_heartbeat)){
-
+ if (time_before(jiffies, next_heartbeat)) {
dprintk("time_before: %ld\n", next_heartbeat - jiffies);
-
/*
* reset event is activated by transition from 0 to 1 on
* RESET_WD1 bit and we assume that it is already zero...
@@ -261,24 +260,21 @@ static void zf_ping(unsigned long data)
spin_unlock_irqrestore(&zf_port_lock, flags);
mod_timer(&zf_timer, jiffies + ZF_HW_TIMEO);
- }else{
+ } else
printk(KERN_CRIT PFX ": I will reset your machine\n");
- }
}
static ssize_t zf_write(struct file *file, const char __user *buf, size_t count,
loff_t *ppos)
{
/* See if we got the magic character */
- if(count){
-
+ if (count) {
/*
* no need to check for close confirmation
* no way to disable watchdog ;)
*/
if (!nowayout) {
size_t ofs;
-
/*
* note: just in case someone wrote the magic character
* five months ago...
@@ -286,11 +282,11 @@ static ssize_t zf_write(struct file *file, const char __user *buf, size_t count,
zf_expect_close = 0;
/* now scan */
- for (ofs = 0; ofs != count; ofs++){
+ for (ofs = 0; ofs != count; ofs++) {
char c;
if (get_user(c, buf + ofs))
return -EFAULT;
- if (c == 'V'){
+ if (c == 'V') {
zf_expect_close = 42;
dprintk("zf_expect_close = 42\n");
}
@@ -303,14 +299,11 @@ static ssize_t zf_write(struct file *file, const char __user *buf, size_t count,
*/
next_heartbeat = jiffies + ZF_USER_TIMEO;
dprintk("user ping at %ld\n", jiffies);
-
}
-
return count;
}
-static int zf_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
- unsigned long arg)
+static long zf_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{
void __user *argp = (void __user *)arg;
int __user *p = argp;
@@ -319,55 +312,38 @@ static int zf_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
if (copy_to_user(argp, &zf_info, sizeof(zf_info)))
return -EFAULT;
break;
-
case WDIOC_GETSTATUS:
case WDIOC_GETBOOTSTATUS:
return put_user(0, p);
-
case WDIOC_KEEPALIVE:
zf_ping(0);
break;
-
default:
return -ENOTTY;
}
-
return 0;
}
static int zf_open(struct inode *inode, struct file *file)
{
- spin_lock(&zf_lock);
- if(test_and_set_bit(0, &zf_is_open)) {
- spin_unlock(&zf_lock);
+ if (test_and_set_bit(0, &zf_is_open))
return -EBUSY;
- }
-
if (nowayout)
__module_get(THIS_MODULE);
-
- spin_unlock(&zf_lock);
-
zf_timer_on();
-
return nonseekable_open(inode, file);
}
static int zf_close(struct inode *inode, struct file *file)
{
- if(zf_expect_close == 42){
+ if (zf_expect_close == 42)
zf_timer_off();
- } else {
+ else {
del_timer(&zf_timer);
printk(KERN_ERR PFX ": device file closed unexpectedly. Will not stop the WDT!\n");
}
-
- spin_lock(&zf_lock);
clear_bit(0, &zf_is_open);
- spin_unlock(&zf_lock);
-
zf_expect_close = 0;
-
return 0;
}
@@ -378,23 +354,18 @@ static int zf_close(struct inode *inode, struct file *file)
static int zf_notify_sys(struct notifier_block *this, unsigned long code,
void *unused)
{
- if(code == SYS_DOWN || code == SYS_HALT){
+ if (code == SYS_DOWN || code == SYS_HALT)
zf_timer_off();
- }
-
return NOTIFY_DONE;
}
-
-
-
static const struct file_operations zf_fops = {
- .owner = THIS_MODULE,
- .llseek = no_llseek,
- .write = zf_write,
- .ioctl = zf_ioctl,
- .open = zf_open,
- .release = zf_close,
+ .owner = THIS_MODULE,
+ .llseek = no_llseek,
+ .write = zf_write,
+ .unlocked_ioctl = zf_ioctl,
+ .open = zf_open,
+ .release = zf_close,
};
static struct miscdevice zf_miscdev = {
@@ -402,7 +373,7 @@ static struct miscdevice zf_miscdev = {
.name = "watchdog",
.fops = &zf_fops,
};
-
+
/*
* The device needs to learn about soft shutdowns in order to
@@ -423,22 +394,23 @@ static int __init zf_init(void)
{
int ret;
- printk(KERN_INFO PFX ": MachZ ZF-Logic Watchdog driver initializing.\n");
+ printk(KERN_INFO PFX
+ ": MachZ ZF-Logic Watchdog driver initializing.\n");
ret = zf_get_ZFL_version();
- if ((!ret) || (ret == 0xffff)) {
+ if (!ret || ret == 0xffff) {
printk(KERN_WARNING PFX ": no ZF-Logic found\n");
return -ENODEV;
}
- if((action <= 3) && (action >= 0)){
- zf_action = zf_action>>action;
- } else
+ if (action <= 3 && action >= 0)
+ zf_action = zf_action >> action;
+ else
action = 0;
zf_show_action(action);
- if(!request_region(ZF_IOBASE, 3, "MachZ ZFL WDT")){
+ if (!request_region(ZF_IOBASE, 3, "MachZ ZFL WDT")) {
printk(KERN_ERR "cannot reserve I/O ports at %d\n",
ZF_IOBASE);
ret = -EBUSY;
@@ -446,14 +418,14 @@ static int __init zf_init(void)
}
ret = register_reboot_notifier(&zf_notifier);
- if(ret){
+ if (ret) {
printk(KERN_ERR "can't register reboot notifier (err=%d)\n",
ret);
goto no_reboot;
}
ret = misc_register(&zf_miscdev);
- if (ret){
+ if (ret) {
printk(KERN_ERR "can't misc_register on minor=%d\n",
WATCHDOG_MINOR);
goto no_misc;
next prev parent reply other threads:[~2008-05-19 13:28 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-05-19 13:04 [PATCH 00/57] watchdog: Giant scrub Alan Cox
2008-05-19 13:04 ` [PATCH 01/57] Clean acquirewdt and check for BKL dependancies Alan Cox
2008-05-19 13:04 ` [PATCH 02/57] clean up and check advantech watchdog Alan Cox
2008-05-19 13:04 ` [PATCH 03/57] ali: watchdog locking and style Alan Cox
2008-05-19 13:05 ` [PATCH 04/57] AR7 watchdog Alan Cox
2008-05-19 13:05 ` [PATCH 05/57] atp watchdog Alan Cox
2008-05-19 13:05 ` [PATCH 06/57] at91: watchdog to unlocked_ioctl Alan Cox
2008-05-19 13:05 ` [PATCH 07/57] cpu5_wdt: switch " Alan Cox
2008-05-19 13:05 ` [PATCH 08/57] davinci_wdt: unlocked_ioctl and check locking Alan Cox
2008-05-19 13:05 ` [PATCH 09/57] ep93xx_wdt: unlocked_ioctl Alan Cox
2008-05-19 13:05 ` [PATCH 10/57] eurotechwdt: unlocked_ioctl, code lock check and tidy Alan Cox
2008-05-19 13:05 ` [PATCH 11/57] hpwdt: couple of include cleanups Alan Cox
2008-05-19 13:05 ` [PATCH 12/57] ib700wdt: clean up and switch to unlocked_ioctl Alan Cox
2008-05-19 13:05 ` [PATCH 13/57] i6300esb: Style, unlocked_ioctl, cleanup Alan Cox
2008-05-19 13:06 ` [PATCH 14/57] ibmasr: coding style, locking verify Alan Cox
2008-05-20 5:52 ` Andrey Panin
2008-05-19 13:06 ` [PATCH 15/57] indydog: Clean up and tidy Alan Cox
2008-05-19 13:06 ` [PATCH 16/57] iop: watchdog switch to unlocked_ioctl Alan Cox
2008-05-19 13:06 ` [PATCH 17/57] it8712f: unlocked_ioctl Alan Cox
2008-05-19 13:06 ` [PATCH 18/57] iTCO: unlocked_ioctl, coding style and cleanup Alan Cox
2008-05-20 8:26 ` Andrew Morton
2008-05-21 4:26 ` Rusty Russell
2008-05-21 4:36 ` Andrew Morton
2008-05-21 4:58 ` Rusty Russell
2008-05-21 9:29 ` Alan Cox
2008-05-22 5:56 ` Rusty Russell
2008-05-22 6:15 ` Andrew Morton
2008-05-19 13:06 ` [PATCH 19/57] bfin: watchdog cleanup and unlocked_ioctl Alan Cox
2008-05-19 13:06 ` [PATCH 20/57] booke watchdog: clean up " Alan Cox
2008-05-19 13:06 ` [PATCH 21/57] ixp2000_wdt: " Alan Cox
2008-05-19 13:06 ` [PATCH 22/57] ixp4xx_wdt: unlocked_ioctl Alan Cox
2008-05-19 13:06 ` [PATCH 23/57] ks8695_wdt: clean up, coding style, unlocked_ioctl Alan Cox
2008-05-19 13:06 ` Alan Cox [this message]
2008-05-19 13:07 ` [PATCH 25/57] mixcomwd: coding style locking, unlocked_ioctl Alan Cox
2008-05-19 13:07 ` [PATCH 26/57] mpc watchdog: clean up and locking Alan Cox
2008-05-19 13:07 ` [PATCH 27/57] mpcore watchdog: unlocked_ioctl and BKl work Alan Cox
2008-05-19 13:07 ` [PATCH 28/57] mtx-1_wdt: clean up, coding style, unlocked ioctl Alan Cox
2008-05-20 15:08 ` Florian Fainelli
2008-05-19 13:07 ` [PATCH 29/57] mv64x60_wdt: clean up and locking checks Alan Cox
2008-05-19 13:07 ` [PATCH 30/57] omap_wdt: locking, unlocked_ioctl, tidy Alan Cox
2008-05-19 13:07 ` [PATCH 31/57] pc87413_wdt: clean up, coding style, unlocked_ioctl Alan Cox
2008-05-19 13:07 ` [PATCH 32/57] pcwd: clean up, unlocked_ioctl usage Alan Cox
2008-05-19 13:07 ` [PATCH 33/57] pnx4008_wdt: unlocked_ioctl setup Alan Cox
2008-05-19 13:07 ` [PATCH 34/57] rm9k_wdt: clean up Alan Cox
2008-05-19 13:08 ` [PATCH 35/57] s3c2410: watchdog cleanup and switch to unlocked_ioctl Alan Cox
2008-05-19 13:08 ` [PATCH 36/57] sa1100_wdt: Switch " Alan Cox
2008-05-19 13:08 ` [PATCH 37/57] sbc60xxwdt: clean up and switch " Alan Cox
2008-05-19 13:08 ` [PATCH 38/57] stg7240_wdt: unlocked_ioctl Alan Cox
2008-05-19 13:08 ` [PATCH 39/57] sbc8360: clean up Alan Cox
2008-05-19 13:08 ` [PATCH 40/57] sbc_epx_c3_wdt: switch to unlocked_ioctl Alan Cox
2008-05-19 13:08 ` [PATCH 41/57] sb_wdog: Clean up and " Alan Cox
2008-05-19 13:08 ` [PATCH 42/57] sc1200_wdt: clean up, fix locking and use unlocked_ioctl Alan Cox
2008-05-19 13:08 ` [PATCH 43/57] sc520_wdt: Clean up and switch to unlocked_ioctl Alan Cox
2008-05-19 13:08 ` [PATCH 44/57] scx200_wdt: clean " Alan Cox
2008-05-19 13:08 ` [PATCH 45/57] shwdt: coding style, cleanup, " Alan Cox
2008-05-19 13:09 ` [PATCH 46/57] smsc37b787_wdt: coding style, " Alan Cox
2008-05-19 13:09 ` [PATCH 47/57] softdog: clean up, coding style and " Alan Cox
2008-05-19 13:09 ` [PATCH 48/57] txx9: Fix locking, " Alan Cox
2008-05-19 13:09 ` [PATCH 49/57] w83627hf: coding style, clean up and " Alan Cox
2008-05-19 13:09 ` [PATCH 50/57] w83697hf_wdt: cleanup, coding style " Alan Cox
2008-05-19 13:09 ` [PATCH 51/57] w83877f_wdt: clean up code, coding style, " Alan Cox
2008-05-19 13:09 ` [PATCH 52/57] w83977f_wdt: clean up, coding style and " Alan Cox
2008-05-19 13:09 ` [PATCH 53/57] wafer5823wdt: Clean up, coding style, " Alan Cox
2008-05-19 13:09 ` [PATCH 54/57] wdrtas: clean " Alan Cox
2008-05-19 13:09 ` [PATCH 55/57] wdt285: switch to unlocked_ioctl and tidy up oddments of coding style Alan Cox
2008-05-19 13:09 ` [PATCH 56/57] wdt977: clean up, coding style and switch to unlocked_ioctl Alan Cox
2008-05-19 13:10 ` [PATCH 57/57] wdt501/pci: Clean " Alan Cox
2008-05-19 18:21 ` [PATCH 00/57] watchdog: Giant scrub Andrew Morton
2008-05-19 19:51 ` Alan Cox
2008-05-20 8:01 ` Wim Van Sebroeck
2008-05-20 8:37 ` Andrew Morton
2008-05-20 15:34 ` Wim Van Sebroeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080519130658.31722.30943.stgit@core \
--to=alan@lxorguk.ukuu.org.uk \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=wim@iguana.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.