#define pr_fmt(fmt) …
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/miscdevice.h>
#include <linux/fs.h>
#include <linux/ioport.h>
#include <linux/timer.h>
#include <linux/completion.h>
#include <linux/jiffies.h>
#include <linux/io.h>
#include <linux/uaccess.h>
#include <linux/watchdog.h>
static int verbose;
static int port = …;
static int ticks = …;
static DEFINE_SPINLOCK(cpu5wdt_lock);
#define PFX …
#define CPU5WDT_EXTENT …
#define CPU5WDT_STATUS_REG …
#define CPU5WDT_TIME_A_REG …
#define CPU5WDT_TIME_B_REG …
#define CPU5WDT_MODE_REG …
#define CPU5WDT_TRIGGER_REG …
#define CPU5WDT_ENABLE_REG …
#define CPU5WDT_RESET_REG …
#define CPU5WDT_INTERVAL …
static struct { … } cpu5wdt_device;
static void cpu5wdt_trigger(struct timer_list *unused)
{ … }
static void cpu5wdt_reset(void)
{ … }
static void cpu5wdt_start(void)
{ … }
static int cpu5wdt_stop(void)
{ … }
static int cpu5wdt_open(struct inode *inode, struct file *file)
{ … }
static int cpu5wdt_release(struct inode *inode, struct file *file)
{ … }
static long cpu5wdt_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{ … }
static ssize_t cpu5wdt_write(struct file *file, const char __user *buf,
size_t count, loff_t *ppos)
{ … }
static const struct file_operations cpu5wdt_fops = …;
static struct miscdevice cpu5wdt_misc = …;
static int cpu5wdt_init(void)
{ … }
static int cpu5wdt_init_module(void)
{ … }
static void cpu5wdt_exit(void)
{ … }
static void cpu5wdt_exit_module(void)
{ … }
module_init(…) …;
module_exit(cpu5wdt_exit_module);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
module_param_hw(port, int, ioport, 0);
MODULE_PARM_DESC(…) …;
module_param(verbose, int, 0);
MODULE_PARM_DESC(…) …;
module_param(ticks, int, 0);
MODULE_PARM_DESC(…) …;