#define pr_fmt(fmt) …
#include <linux/init.h>
#include <linux/ktime.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/err.h>
#include <linux/mtd/mtd.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/random.h>
#include "mtd_test.h"
static int dev = …;
module_param(dev, int, S_IRUGO);
MODULE_PARM_DESC(…) …;
static int count;
module_param(count, int, S_IRUGO);
MODULE_PARM_DESC(…) …;
static struct mtd_info *mtd;
static unsigned char *iobuf;
static unsigned char *bbt;
static int pgsize;
static int ebcnt;
static int pgcnt;
static int goodebcnt;
static ktime_t start, finish;
static int multiblock_erase(int ebnum, int blocks)
{ … }
static int write_eraseblock(int ebnum)
{ … }
static int write_eraseblock_by_page(int ebnum)
{ … }
static int write_eraseblock_by_2pages(int ebnum)
{ … }
static int read_eraseblock(int ebnum)
{ … }
static int read_eraseblock_by_page(int ebnum)
{ … }
static int read_eraseblock_by_2pages(int ebnum)
{ … }
static inline void start_timing(void)
{ … }
static inline void stop_timing(void)
{ … }
static long calc_speed(void)
{ … }
static int __init mtd_speedtest_init(void)
{ … }
module_init(mtd_speedtest_init);
static void __exit mtd_speedtest_exit(void)
{ … }
module_exit(mtd_speedtest_exit);
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;