
linux 设备驱动
文章平均质量分 68
JosenQiao
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
printk的详细原理分析
设置命令行参数"console=ttySAC0" 它使得printk的信息从串口0中输出。那么内核是怎样根据命令行参数确定printk的输出设备呢? 在kernel/printk.c 中有如下代码: __setup("console=", console_setup); 具体分析:原创 2013-01-15 21:44:09 · 1023 阅读 · 0 评论 -
内核 BUG_ON 以及WARN_ON 用法作用
一些内核调用可以用来方便标记bug,提供断言并输出信息。最常用的两个是BUG()和BUG_ON()。当被调用的时候,它们会引发oops,导致栈的回溯和错误信息的打印。为什么这些声明会导致 oops跟硬件的体系结构是相关的。大部分体系结构把BUG()和BUG_ON()定义成某种非法操作,这样自然会产生需要的oops。你可以把这些调用当作断言使用,想要断言某种情况不该发生 : if (bad_t原创 2013-01-17 11:03:42 · 31577 阅读 · 0 评论 -
container_of 分析
问题:如何通过结构中的某个变量获取结构本身的指针??? 关于container_of见kernel.h中: /** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the t转载 2013-01-19 18:06:20 · 403 阅读 · 0 评论 -
GNU C 的复合语句
GNU C把包含在括号中的复合语句看作是一个表达式。这样就允许你在表达式中使用循环、switch语句以及局部变量。 让我们回忆一下,复合语句是用大括号括起来的一组表达式,在这种构造之下,大括号外面要有一对圆括号。例如: ({ int y = foo (); int z; if (y > 0) z = y; else z = - y; z; })原创 2013-01-19 19:19:48 · 519 阅读 · 0 评论