没有合适的资源?快使用搜索试试~ 我知道了~
Linux内核基础——Linux内核基础编程
6 下载量 106 浏览量
2021-01-09
05:44:48
上传
评论
收藏 123KB PDF 举报
温馨提示
试读
1页
任务一、模块编程 子任务1、编写最简单的内核模块,并将其加载到内核中 hello.c #include #include #include static int init_hello(void) { printk(KERN_INFO Hello, World!\n); return 0; } static void cleanup_hello(void) { printk(KERN_INFO Goodbye, world!\n); } module_init(init_hello); module_exit(cleanup_hello); MODULE_LICENSE(GPL
资源详情
资源评论
资源推荐
Linux内核基础内核基础——Linux内核基础编程内核基础编程
任务一、模块编程任务一、模块编程
子任务子任务1、编写最简单的内核模块,并将其加载到内核中、编写最简单的内核模块,并将其加载到内核中
hello.c
#include
#include
#include
static int init_hello(void)
{
printk(KERN_INFO "Hello, World!");
return 0;
}
static void cleanup_hello(void)
{
printk(KERN_INFO "Goodbye, world!");
}
module_init(init_hello);
module_exit(cleanup_hello);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("zjc");
MODULE_DESCRIPTION("A test project");
Makefile
obj-m += hello.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
首先使用Linux内核的函数库编写最简单的模块,模块功能是使用printk内核控制台输出函数,打印KERN_INFO消息等级的字符串”Hello World”。
===============[根据官方文档说明]
内核模块的编程必须至少编写两个函数,一个初始化模块函数初始化模块函数和清除模块函数清除模块函数。
初始化模块函数初始化模块函数在模块被insmod(加载)到内核中时被调用,清除模块函数清除模块函数在模块被rmmod(卸载)之前被调用。
在linux内核2.4版本之前这个初始化模块函数和清除模块函数必须被命名为指定的函数名”init_module”和”cleanup_module”,在linux2.4提出的新特性,
使用module_init()和module_exit()宏对初始化模块函数和清除模块函数进行注册这允许了开发者自定义初始化模块函数和清除模块函数的名字。
====================.
以下编写内核模块的方式采用linux2.4后的宏注册方法,一般来说初始化模块函数返回值为int,传入参数为void;清除模块函数返回值和传参都为void。
编写完毕后一定要要使用宏module_init和module_exit对初始化模块函数和清除模块函数进行注册。这两个宏被定义在linux/init.h中。
注册完毕后,使用MODULE_LICENSE写入模块的描述信息,分别写入了:”GPL”许可证的协议声明、作者和模块描述信息。
最后,执行Makefile文件对模块进行编译,可以看到Makefile文件中导入体系相关的build文件夹,对模块进行编译。
编译结束后,除了hello.c和Makefile增加了一下文件,其中的hello.ko就是编译好的内核模块。
hello.ko hello.mod.c hello.mod.o hello.o modules.order Module.symvers
通过modinfo hello.ko可以查看内核模块的相关信息。这里可以看到我们刚才使用MODULE_XXX系列宏写入的协议、作者等描述信息。
原创文章 7获赞 0访问量 227
关注
私信
展开阅读全文
作者:superboy_ZJC
weixin_38634037
- 粉丝: 7
- 资源: 958
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0