文章目录
前言
前面的文章介绍了最简单的内核模块实例,本文主要是介绍由多个文件组成的内核模块,包括代码实例及对应的Makefile文件的写法;和应用层代码一样,当该内核模块(驱动)实现的功能比较复杂时, 不可能把所有的代码都全部写在一个.c文件里面,它也会根据具体的功能,使用模块化编程,即将主要的内核模块相关的放到一个.c文件中,其他的函数接口放在其他.c文件中实现。
一、内核模块源代码实例
本实例共由两个 .c文件文件及对应的头文件组成,分别是module_demo.c 和 add.c ,add.h
其中module_demo.c是内核模块主体文件,它里面会去调用 add.c 里面实现的具体函数
1. module_demo.c
#include <linux/init.h>
#include <linux/module.h>
#include "add.h" //本地实现的头文件
static int hello_init(void)
{
int a = 0;
printk(KERN_INFO "in hello init\n");
printk(KERN_INFO "*********** a = %d\n", a);
add_test(&a); //调用add_test()
printk(KERN_INFO "*********** a = %d\n", a);
return 0<