
Linux内核驱动开发
Klaus_Wei
这个作者很懒,什么都没留下…
展开
-
内核链表深度分析
内核链表深度分析: 相对于数组,链表具有动态性, 节点:数据域和指针域。 通过指针域串联就是链表。 内核链表是双向循环链表。 1.内核链表与普通链表区别: 内核链表能够创建一套统一链表 struct list_head { struct list_head *next, *prev; } list_head结构包含了两个指向list_head结构的指针,prev和nex原创 2014-09-03 16:52:59 · 759 阅读 · 0 评论 -
linux源码中asmlinkage的作用
linux源码中常常看到这个 函数定义前加宏asmlinkage ,表示这些函数通过堆栈而不是通过寄存器传递参数。 gcc编译器在汇编过程中调用c语言函数时传递参数有两种方法:一种是通过堆栈,另一种是通过寄存器。缺省时采用寄存器,假如你要在你的汇编过程中调用c语言函数,并且想通过堆栈传递参数,你定义的c函数时要在函数前加上宏asmlinkage原创 2014-10-10 11:35:03 · 1158 阅读 · 0 评论 -
梳理spinlock自旋锁相关知识
自旋锁 自旋锁是为多核系统设计,在SMP系统上可以实现真正的自旋锁,但对于UP系统,自旋锁仅仅做了抢占和中断,没有实现真正的“自旋”。如果在单核中配置了CONFIG_DEBUG_SPINLOCK,按照smp系统来编译。 自旋锁的目的: 针对于多核系统,保护一小段短小的临界区操作,保证这段临界区的操作是原子的,从而避免并发的竞争冒险,在linux内核中的自旋锁用于那些包含内核数据结原创 2015-03-17 10:23:09 · 1143 阅读 · 0 评论 -
linux系统下编译安装时的配置参数说明
configure配置的参数 交叉编译 host,build target的含义 交叉编译profix,host,build,target的含义: --profix :指定安装路径 --build:就是你正在使用的机器, --host:就是你编译好的程序可以运行的平台, --target:就是你编译的程序可以处理的平台. 这个 build和host比较好理解,但是target就不好办了...原创 2019-05-22 15:25:58 · 686 阅读 · 0 评论