Linux内核驱动模块编写(Hello,World)

我觉得自己的目标很混乱,总是看这个又看那个.虽说这个习惯不好,可是也增加了许多见识.

今天尝试编写内核模块,写了一个hello,world,结果弄了1个小时。

主要参考了网上的人的说明,结果发现尽信书不如无书,很多人说的都不是很仔细,我觉得这对于初学者来说,很不好。

大家贴出来的东西,不仅仅给自己也是给别人,所以有时候一定要严谨,否则很可能误导别人。

首先贴出代码


 1

Linux内核驱动模块编写(Hello,World)

// 这两个头文件包含相应宏定义
 2

Linux内核驱动模块编写(Hello,World)

#include <linux/init.h>
 3

Linux内核驱动模块编写(Hello,World)

#include 
<linux/module.h>
 4

Linux内核驱动模块编写(Hello,World)

// 告知内核,这是free模块
 5

Linux内核驱动模块编写(Hello,World)

MODULE_LICENSE("GPL");
 6

Linux内核驱动模块编写(Hello,World)


 7

Linux内核驱动模块编写(Hello,World)

// 模块进入函数
 8static int __init hello_init(void)

Linux内核驱动模块编写(Hello,World)

{
 9        printk(KERN_ALERT "Hello World\n");
10        return 0;
11

Linux内核驱动模块编写(Hello,World)

}

12

Linux内核驱动模块编写(Hello,World)


13

Linux内核驱动模块编写(Hello,World)

// 模块退出函数
14static void __exit hello_exit(void)

Linux内核驱动模块编写(Hello,World)

{
15        printk(KERN_ALERT "Hello World exit\n");
16

Linux内核驱动模块编写(Hello,World)

}

17

Linux内核驱动模块编写(Hello,World)


18

Linux内核驱动模块编写(Hello,World)

// 初始化
19

Linux内核驱动模块编写(Hello,World)

module_init(hello_init);
20

Linux内核驱动模块编写(Hello,World)

// 退出 
21

Linux内核驱动模块编写(Hello,World)

module_exit(hello_exit);
22

Linux内核驱动模块编写(Hello,World)

// 作者声明
23

Linux内核驱动模块编写(Hello,World)

MODULE_AUTHOR("Di Zhuang");
24

Linux内核驱动模块编写(Hello,World)

MODULE_DESCRIPTION(
"A simple Hello World Module");
25

Linux内核驱动模块编写(Hello,World)

MODULE_ALIAS(
"a simplest module");

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwswyx.html