学习linux 内核开发做学习笔记。
作者 :Johannes
开发平台:Raspberry Pi 3 数莓派3
程序源码
不考虑交叉编译以及环境配置,只学习了解视频。需要了解下makefile 以及linux 常用命令
lessson2 better_hello
#include <linux/module.h>
#include <linux/init.h>
static int __init my_init(void)
{
printk("hello - Hello, Kernel!\n");
return 0;
}
static void __exit my_exit(void)
{
printk("hello - Goodbye, Kernel!\n");
}
module_init(my_init);
module_exit(my_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Johannes 4Linux");
MODULE_DESCRIPTION("A simple Hello World Linux Kernel Module");
相对于第一课,这第二课的hello.c改动不多
将初始化和移除的函数添加了static 关键字,保证函数my_init() /my_exit()只能在这个hello.c文件中调用,显然安全程度高了很多。
添加 __init/__exit,添加的宏增加了函数可读性
添加MODULE_AUTHOR/MODULE_DESCRIPTION 添加了模块说明,以后可以用modinfo等命令查看模块信息。
makefile 一样。编译好之后insmod/rmmod。想查看信息的话有modinfo/dmesg/lsmod
这个hello.c就是最简单的linux 内核驱动模块程序了。解释了加载/移除 驱动模块 ,加载模块之后如何查看内核模块信息。