#define pr_fmt(fmt) …
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/kthread.h>
#include <linux/workqueue.h>
#include <linux/memblock.h>
#include <asm/proto.h>
#include <asm/setup.h>
#define MAX_SCAN_AREAS …
static int __read_mostly memory_corruption_check = …;
static unsigned __read_mostly corruption_check_size = …;
static unsigned __read_mostly corruption_check_period = …;
static struct scan_area { … } scan_areas[MAX_SCAN_AREAS];
static int num_scan_areas;
static __init int set_corruption_check(char *arg)
{ … }
early_param(…);
static __init int set_corruption_check_period(char *arg)
{ … }
early_param(…);
static __init int set_corruption_check_size(char *arg)
{ … }
early_param(…);
void __init setup_bios_corruption_check(void)
{ … }
static void check_for_bios_corruption(void)
{ … }
static void check_corruption(struct work_struct *dummy);
static DECLARE_DELAYED_WORK(bios_check_work, check_corruption);
static void check_corruption(struct work_struct *dummy)
{ … }
static int start_periodic_check_for_corruption(void)
{ … }
device_initcall(start_periodic_check_for_corruption);