标签:官方网站
从本章开始引入所有关于模块和内核编程的基本概念,并编写一个完整模块来实践这些基本的概
念。
3.1 搭建测试环境
由于所有测测试代码都是基于Ubuntu 14.04.2 Desktop的3.16.0-30-generic内核,所以最好是到
Linux官方网站去下载一份该版本内核的源代码。另外,建议在虚拟机里面安装你的Ubuntu桌面环境,这
样避免因为误操作造成硬件损坏或者重要数据丢失。更多测试环境搭建细节可参考博文:
Ubuntu 14.04.2 + Vmware搭建Linux驱动开发环境
3.2 Hello World模块
下面的代码是一个完整的Hello World模块。
#include <linux/init.h>
#include <linux/module.h>
MODULE_LICENSE("Dual BSD/GPL");
static int hello_init(void)
{
printk(KERN_ALERT "Hello, world\n");
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT "Goodbye, cruel world\n");
}
module_init(hello_init);
module_exit(hello_exit);该模块有两个函数,hello_init()在模块加载到内核时被调用,hello_exit()在模块从内核移除是被调用。
宏module_init和module_exit分别将函数hello_init()和hello_exit()放入两个特定的段(section)内,这样模块在被链接到内核时,内核能够知道它们分别是用于模块加载/移除的函数。而宏MODULE_LICENSE声明
了模块的许可权限,同时,如果不做许可声明,内核会有所抱怨。
本文出自 “JiMoKuangXiangQu” 博客,请务必保留此出处http://4594296.blog.51cto.com/4584296/1791050
标签:官方网站
原文地址:http://4594296.blog.51cto.com/4584296/1791050