内核双向链表数据结构初探
时间:2006-11-25 来源:oliliango
在极度的郁闷之中苦中作乐时完成的一些代码片断。现在整理的时候翻出来了就发上来备忘,也权且是一个复习的意思。
在内核源码中有大量的链表数据结构,使用的都是这个clist链表数据结构。如果要找个通用的东西来作为所谓的“标准”,那么这个数据结构及其相关的操作函数集可以算一个“事实上的标准”了吧。
同样是在极度郁闷的一段时间中读ldd和ulk时提到这个数据结构和相关的操作函数集,随手写了两行代码试验一下。其实用起来还是满简单的,关键是两个宏挺有意思:
list_entry宏和container_of宏还是满有意思,一个挺有“魔力”的转换技巧。而这个数据结构在用户空间也可用,而不向很多内核提供的数据结构和接口api只能在内核空间使用。截至目前由于我的孤陋寡闻还没有听说有glibc的相应的东东,所以在用户空间也可用还是很有吸引力的了。
贴上代码备忘吧:

在内核源码中有大量的链表数据结构,使用的都是这个clist链表数据结构。如果要找个通用的东西来作为所谓的“标准”,那么这个数据结构及其相关的操作函数集可以算一个“事实上的标准”了吧。
同样是在极度郁闷的一段时间中读ldd和ulk时提到这个数据结构和相关的操作函数集,随手写了两行代码试验一下。其实用起来还是满简单的,关键是两个宏挺有意思:
list_entry宏和container_of宏还是满有意思,一个挺有“魔力”的转换技巧。而这个数据结构在用户空间也可用,而不向很多内核提供的数据结构和接口api只能在内核空间使用。截至目前由于我的孤陋寡闻还没有听说有glibc的相应的东东,所以在用户空间也可用还是很有吸引力的了。
贴上代码备忘吧:

最后注上;编译的时候加上-D__KERNEL__吧。
相关阅读 更多 +
排行榜 更多 +