
linux kernel
stone8761
这个作者很懒,什么都没留下…
展开
-
linux_ioctl与内核交换数据
1. 前言 使用ioctl系统调用是用户空间向内核交换数据的常用方法之一,从ioctl这个名称上看,本意是针对I/O设备进行的控制操作,但实际并不限制是真正的I/O设备,可以是任何一个内核设备即可。2. 基本过程 在内核空间中ioctl是很多内核操作结构的一个成员函数,如文件操作结构struct file_operations(include/linux/fs.h)、协转载 2014-06-18 11:09:42 · 1106 阅读 · 0 评论 -
导出内核符号错误!(err -22)
module A使用EXPORT_SYMBOL_GPL()到处某个符号,module B使用这个符号,但在加载模块B时却出现如下错误:[ 4009.479510] B: no symbol version for xxx[ 4009.479519] B: Unknown symbol xxx (err -22)这是linux kernel 2.6.26 之后版本原创 2017-07-07 17:41:40 · 4883 阅读 · 0 评论 -
linux内核调试技巧 dump_stack()
linux内核提供函数dump_stack()来跟踪函数的调用过程,原理是通过打印当前cpu的堆栈的调用函数来显示当前的上下文环境与调用关系;例:创建一个混杂设备,并定义read函数。在read中加入dump_stack(),显示read调用关系。结果如下:[ 1560.465491] CPU: 0 PID: 2759 Comm: cat Tainted: GF原创 2017-07-15 20:12:55 · 2789 阅读 · 3 评论 -
linux内核符号表
转自:http://blog.chinaunix.net/uid-21633169-id-1823329.html所谓内核符号表就是在内核内部函数或变量中可供外部引用的函数和变量的符号表。在 2.6 内核下,使用以下命令可以看到内核符号表:引用 beyes@linux-beyes:/> cat /proc/kallsyms | morec0100000 T转载 2016-07-26 09:25:46 · 609 阅读 · 0 评论 -
对于struct file_operations中ioctl消失的学习笔记
很久都没有写驱动代码了,对于一些驱动相关的内核变化也没有怎么关心。这次重游《LDD3》获益良多,其值对于struct file_operations中ioctl的消失也让我长了不少见识。当年看《LDD3》的时候已经注意到了书中对ioctl的评价不是很好:“ioctl调用的非结构化本质导致众多内核开发者倾向于放弃它。” ,而在这次阅读3.0代码的时候,这个成员在struct file_opera转载 2014-05-08 10:29:39 · 1468 阅读 · 0 评论 -
mdev的使用以及mdev.conf的规则配置--busybo
mdev是busybox下的udev的精简版,适合在嵌入式系统下管理设备但mdev会把所有的设备文件都动态地创建在/dev/目录下,如果程序使用dev目录子目录下的设备,就必须修改程序,比较麻烦,当然也可以在mdev运行之后,手工创建子目录,然后再用 ln -s 做设备文件的软链接这里有人作出了更好的脚本处理机制:http://lists.busybox.net/pipermail/b转载 2014-06-24 16:04:57 · 917 阅读 · 0 评论 -
Unknown symbol __udivdi3 (err 0)
最近在调试wlan驱动模块时出现如下错误:[ 17.940000] qca_ol: Unknown symbol __udivdi3 (err 0)insmod: can't insert '/lib/modules/qca_ol.ko': unknown symbol in module, or unknown parameter 这个错误导致qca_ol.ko无法原创 2017-11-10 10:03:46 · 3378 阅读 · 0 评论