kernel
lemontree1945
这个作者很懒,什么都没留下…
展开
-
insmod module_param 模块参数
模块参数引导模块时,可以向它传递参数。要使用模块参数加载模块,这样写:insmod module.ko [param1=value param2=value ...]为了使用这些参数的值,要在模块中声明变量来保存它们,并在所有函数之外的某个地方使用宏MODULE_PARM(variable, type) 和 MODULE_PARM_DESC(variable, description) 来接收它们...转载 2018-07-06 13:37:52 · 779 阅读 · 0 评论 -
驱动中EXPORT_SYMBOL()的作用
linux2.6的“/prob/kallsyms”文件对应着内核符号表,记录了符号以及符号所在的内存地址。模块可以使用如下宏导出符号到内核符号表:view plaincopy to clipboardprint?01.EXPORT_SYMBOL(符号名); 02.EXPORT_SYMBOL_GPL(符号名) EXPORT_SYMBOL(符号名);EXPORT_SYMBOL_GPL(符号名)导出的...转载 2018-07-06 15:32:42 · 726 阅读 · 0 评论 -
Linux内核调试debugfs
DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。 通常情况下,最常用的内核调试手段是printk。但printk并不是所有情况都好用,比如打印的数据可能过多,我们真正关心的数据在大量的输出里不是那么一目了然...转载 2019-02-18 09:46:06 · 338 阅读 · 0 评论 -
__init、__initdata和__exit、__exitdata
由于4年前对于C语言和Linux的知识贫乏,所以当时对于模块中的函数定义没有细看。这次在温习《LDD3》的时候,重新看了一下关于__init、__initdata和__exit、__exitdata的知识,记录如下: 对于__init、__initdata和__exit、__exitdata的定义位于<linux/init.h>,这些宏定义的作用是告诉编译器将这些函数或者数据放...转载 2019-08-06 08:58:15 · 720 阅读 · 0 评论