开始学习Linux驱动,记录学习内容与路线,下文中超链接多为网络中前辈们的blog
其中的部分头文件:
Writing
Installing : 函数Int init_module()
Removing Modules: 函数void cleanup_module()
相关知识
动动手:
Tips:
- write函数的返回类型可能需要改为ssize_t
- ./hellotest需要sudo运行,否则会返回-1
- 需要monutil --disable-validation 设置boot secure mode,否则载入模块时需要模块签名验证(也有其他方法)
相关知识:
__init等关键字
对于赶时间的朋友,只看第一段就好了。
首先,我非常肯定以及确定的告诉你ssize_t是有符号整型,在32位机器上等同与int,在64位机器上等同与long int,有没有注意到,它和long数据类型有啥区别?其实就是一样的。size_t 就是无符号型的ssize_t,也就是unsigned long/ unsigned int (在32位下),不同的编译器或系统可能会有区别,主要是因为在32位机器上int和long是一样的。在64位没有测试,但是参见百度百科,size_t 在64位下是64位,那么size_t的正确定义应该是typedef unsigned long size_t。