#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/types.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/reboot.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/uaccess.h>
#include <linux/sysrq.h>
#include <linux/timer.h>
#include <linux/hrtimer.h>
#define VERSION_STR …
#define DEFAULT_IOFENCE_MARGIN …
#define DEFAULT_IOFENCE_TICK …
static int hangcheck_tick = …;
static int hangcheck_margin = …;
static int hangcheck_reboot;
static int hangcheck_dump_tasks;
module_param(hangcheck_tick, int, 0);
MODULE_PARM_DESC(…) …;
module_param(hangcheck_margin, int, 0);
MODULE_PARM_DESC(…) …;
module_param(hangcheck_reboot, int, 0);
MODULE_PARM_DESC(…) …;
module_param(hangcheck_dump_tasks, int, 0);
MODULE_PARM_DESC(…) …;
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_VERSION(…);
#ifndef MODULE
static int __init hangcheck_parse_tick(char *str)
{ … }
static int __init hangcheck_parse_margin(char *str)
{ … }
static int __init hangcheck_parse_reboot(char *str)
{ … }
static int __init hangcheck_parse_dump_tasks(char *str)
{ … }
__setup(…);
__setup(…);
__setup(…);
__setup(…);
#endif
#define TIMER_FREQ …
static unsigned long long hangcheck_tsc, hangcheck_tsc_margin;
static void hangcheck_fire(struct timer_list *);
static DEFINE_TIMER(hangcheck_ticktock, hangcheck_fire);
static void hangcheck_fire(struct timer_list *unused)
{ … }
static int __init hangcheck_init(void)
{ … }
static void __exit hangcheck_exit(void)
{ … }
module_init(…) …;
module_exit(hangcheck_exit);