Linux内核编程(项目笔记)——项目:Hellomod
来源:互联网 发布:python boost库 编辑:程序博客网 时间:2024/06/01 18:38
项目:Hellomod
按照书中项目流程在内核2.6.27.5中实验,出现错误:
error : invalid preprocessing directive#MODULE_LICENCE
把前面的#去掉,又出现这样的错误:
erro : expected declaration specifiers or ‘…’before string constant
之后把MODULE_LICENCE这一行注释掉,实验可正常运行,但是在/var/log/messages的内容中出现这一行:
hellomod : module licence ‘unspecified’ taintskernel.
即没有定义模块通行证,所以这一行是不应该被注释的。
所以现在就找找MODULE_LICENCE这些知识点。
网上找了下,原来在这个项目中书出现了两个错误,不过都是在MODULE_LICENCE的:
1、 MODULE_LICENCE前面的#应该是没有的;
2、 MODULE_LICNECE应该是MODULE_LICENSE
这样就可以了。
之后就探讨这个驱动程序是如何工作的:在用户态中insmod加载模块,即调用模块初始化函数module_init(),其中这个模块初始化函数是通过系统调用sys_init_module()进入内核态,执行内核打印语句printk函数,打印出的信息保存在/var/log/messages中;通过rmmod卸载模块,调用module_exit(),系统调用sys_delete_module(),打印信息等与上一样。
模块编译的过程:通过执行脚本文件把.c文件通过源码环境编译为加载模块。
问题:
1、.c文件是如何在源码环境/usr/src/kernel中编译为可加载模块的?
2、内核打印信息如何打印到终端而不是日志文件?
在项目current系统变量中给出答案。
3、 MODULE_LICENCE和MODULE_LICENSE的区别。
4、 把Makefile和doit脚本合为一个Makefile文件。
- Linux内核编程(项目笔记)——项目:Hellomod
- Linux内核编程(项目笔记)——项目:current系统变量
- Linux内核编程(项目笔记)——项目:进程内存映射
- Linux内核编程(项目笔记)——项目:创建并口驱动程序
- linux内核模块学习hellomod
- Hellomod , Linux内核模块的Hello World
- 嵌入式linux 项目开发(一)——CGIC编程
- 嵌入式linux 项目开发(一)——CGIC编程
- 嵌入式linux 项目开发(一)——HTML编程
- 《Linux内核设计与实现》笔记——内核编译过程以及内核编程特点
- shelll编程-项目笔记
- [LINUX内核编程]学习笔记(一)
- [LINUX内核编程]学习笔记(二)
- Linux内核编程(一) —— 内核模块加载
- Linux项目组编程规范
- Linux内核学习笔记——Linux内核简介
- linux内核编程学习笔记:linux内核体系结构
- Linux内核0.12——内核编程语言和环境
- 桌面便签程序详解
- RAID 简介
- Raid,不可不知的常用等级。
- facebook的分享按钮
- Oracle WHERE条件执行顺序
- Linux内核编程(项目笔记)——项目:Hellomod
- Linux内核编程(项目笔记)——项目:current系统变量
- 1430 新语种(数据结构入门题)
- 常见的 DOM Core 方法、属性和注意点
- js 禁止在网页上使用右键
- 1431 多重队列(面试真题)
- orcale 存储过程处理分页
- 1432 要上课啦!书呢?(数据结构入门题)
- 1435 ISBN号码