
嵌入式Linux-Kernel
kernel
冉冉云
嵌入式软件开发、linux爱好者
展开
-
modulename: loading out-of-tree module taints kernel
问题描述使用insmod命令加载编写的驱动模块时,出现提示信息:loading out-of-tree module taints kernel。不过,模块还是能够被加载。并且卸载后再次加载时,该提示信息没有再次出现。然而整个系统重启后再加载模块,仍然会出现该提示信息。也就是说,在linux的一次运行期间,加载自己编写的驱动模块时,出现了上述提示信息。原因分析提示信息中的taint是污染的意...原创 2020-04-09 23:49:29 · 29034 阅读 · 5 评论 -
Unhandled fault: page domain fault
问题描述测试一个驱动demo的时候,执行了写设备文件的操作,然后出现错误,错误信息中提示Unhandled fault: page domain fault。原因分析驱动层write函数大体如下:ssize_t xxx_write(struct file *file, const char __user *user_buf, size_t count, loff_t *ppos...原创 2020-04-09 11:32:26 · 4012 阅读 · 0 评论 -
linux kernel中的asm-offsets.c
1 在汇编中使用结构体首先考虑一下结构体:struct test{ int a; int b;}这个结构体很简单,只是用来举例子。在c语言中,如果我们要访问结构体中的某个成员,这非常容易:struct test t;t.a = 1;假如我们想知道结构体中某个成员在结构体中的偏移,这也不难,比如linux kernel就提供了offsetof宏来实现这个功能:offseto...原创 2020-03-24 11:39:09 · 1401 阅读 · 0 评论 -
Linux的异步通知
目录前言1 概览异步通知2 应用层使用异步通知3 驱动层支持异步通知3.1 响应应用层设置FASYNC——xxx_fasync3.1.1 fasync_helper3.1.2 fasync_add_entry3.1.3 fasync_insert_entry3.1.4 总结3.2 驱动怎么发送信号给进程——kill_fasync3.2.1 kill_fasync3.2.2 kill_fasync_...原创 2019-11-20 19:11:56 · 1083 阅读 · 1 评论 -
Linux的poll机制
目录前言1 应用层使用poll1.1 poll的原型1.2 使用示例2 驱动怎么支持poll2.1 字符设备驱动3 一些更深入的分析3.1 从系统调用poll到驱动的xxx_poll3.1.1 sys_poll3.1.2 do_sys_poll3.1.3 do_poll3.1.4 do_pollfd3.1.5 vfs_poll3.1.6 总结3.2 poll_wait做了什么4 select和po...原创 2019-11-13 19:19:44 · 3411 阅读 · 5 评论 -
Linux kernel的likely与unlikely
为什么使用likely与unlikely在Linux kernel的源码中,存在这样的用法:if (likely(cond)) { ......}if (unlikely(cond)) { ......}likely和unlikely是宏定义,若cond为真(非0),那么likely(cond)为真;反之,若cond为假(非0),那么**likely(cond)**为假。unl...原创 2019-10-27 23:54:59 · 1532 阅读 · 0 评论