这篇文章主要解决如何将之前介绍的三个字符设备驱动程序合并为一个内核模块,即将null字符设备驱动程序、zero字符设备驱动程序、4k大小的临时存储空间的字符设备驱动程序合并为一个内核模块,能够加载到内核模块中,具体实现过程如下所示:
将之前提到的三个驱动程序放在同一个目录下,即mydev_null.c、mydev_zero.c、mydev_temp.c和mydev_temp.h文件放在某个文件夹中,然后编写一个mydev.h文件,内容如下:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/sched.h>
#include <linux/init.h>
#include <linux/cdev.h>
#include <linux/slab.h>
#include <linux/uaccess.h>
#ifdef CONFIG_MODVERSIONS
#define MODVERSIONS
#include <linux/version.h>
#endif
int mydev_null_init(void);
int mydev_zero_init(void);
int mydev_temp_init(void);
void mydev_null_exit(void);
void mydev_zero_exit(void);
void mydev_temp_exit(void);
这个文件主要包括一些头文件和函数声明,然后编写mydev.h文件,如下所示: