<aside> 💡 总结了 Linux 内核实现中常用的数据结构、函数、宏等基础设计

</aside>

在用户态下试运行内核函数、数据结构的方法:

> gcc -D__KERNEL__ -I/usr/src/linux-2.6.7/include pfile.c -o pfile

链表 list_head

list_head双向链表指针域的实现:

struct list_head {
	list_head *next;
	list_head *prev;
}

数据结构通过引入一个list_head成员变量来组织成为双向链表,数据域的访问通过结构体地址偏移量(offset)来实现。

相关操作

错误码与指针

编译优化

unlikely(<cond>) & likely(<cond>) 指代某个分支(cond)是否更有可能发生,来指导编译器进行对应的优化,减少程序跳转开销。

RCU

<aside> 🗣 Read-Copy-Update 是 Linux 的一种无锁同步机制

</aside>

缓存管理机制 Slab