
Linux kernel
文章平均质量分 64
IT_Linux
Linux world
展开
-
模块参数与符号
模块参数module_param(name,type, perm);module_param_array(name, type, num, perm);perm表示该参数在sysfs文件系统中所对应的文件节点的属性;你应该使用中定义的权限值;这个值决定谁可以存取这些模块参数在sysfs文件系统中的表示;当perm为0时,表示此参数不存在sysfs文件系统下对应的文件节点;否则,原创 2014-04-03 13:58:02 · 1658 阅读 · 0 评论 -
likely && unlikely
likely和unlikely是gcc扩展的跟处理器相关的宏:#define likely(x) __builtin_expect(!!(x), 1)#define unlikely(x) __builtin_expect(!!(x), 0)现在处理器都是流水线的,有些里面有多个逻辑运算单元,系统可以提前取多条指令进行并行处理,但遇到跳转时,则需要重新取指令,这相对于不用重新去指原创 2014-04-03 13:09:53 · 3309 阅读 · 0 评论 -
container_of分析
container_of是一个伟大的宏,其实现非常巧妙,值得学习。功能:根据对象的一个成员指针获取该对象的指针#define container_of(ptr, type, member)({ /const typeof(((type*)0)->member)*__mptr=(ptr); /(type *)((char*)__mptr-offsetof(type,member));})原创 2014-04-03 13:06:19 · 1226 阅读 · 0 评论 -
自旋锁透彻分析
自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。 由于自旋锁使用者一般保持锁时间非常短,因此选择自旋而不是睡眠是非常必要的,自旋锁的效率远高于互斥锁。 信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用(_trylock的转载 2014-04-30 18:00:07 · 1201 阅读 · 0 评论 -
自旋锁详解
自旋锁自旋锁(spinlock)是用在多个CPU系统中的锁机制,当一个CPU正访问自旋锁保护的临界区时,临界区将被锁上,其他需要访问此临界区的CPU只能忙等待,直到前面的CPU已访问完临界区,将临界区开锁。自旋锁上锁后让等待线程进行忙等待而不是睡眠阻塞,而信号量是让等待线程睡眠阻塞。自旋锁的忙等待浪费了处理器的时间,但时间通常很短,在1毫秒以下。自旋锁用于多个CPU系统中,在单处理转载 2014-04-30 18:04:05 · 3266 阅读 · 0 评论 -
netlink
1 引言Linux中的进程间通信机制源自于Unix平台上的进程通信机制。Unix的两大分支AT&T Unix和BSD Unix在进程通信实现机制上的各有所不同,前者形成了运行在单个计算机上的System V IPC,后者则实现了基于socket的进程间通信机制。同时Linux也遵循IEEE制定的Posix IPC标准,在三者的基础之上实现了以下几种主要的IPC机制:管道(Pipe)及命名管道(转载 2013-11-12 10:17:30 · 1738 阅读 · 0 评论 -
一张图说明Linux内核
这是很久以前从网上找到的一张图片,近来看看,挺有意思的,就发出来吧。原创 2014-04-04 13:03:08 · 2015 阅读 · 0 评论