这篇文章主要解决如何将之前介绍的三个字符设备驱动程序合并为一个内核模块,即将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文件,如下所示:
#include "mydev.h"
static int __init mydev_init(void)
{
mydev_null_init();
m

本文介绍如何将null、zero和4k临时存储字符设备驱动整合成一个内核模块。通过将驱动程序文件放在一起,创建mydev.h头文件,删除各驱动中的module_init和module_exit宏,并编写相应的Makefile,实现了将这三个驱动合并到单个模块的能力。
最低0.47元/天 解锁文章
718

被折叠的 条评论
为什么被折叠?



