Kernel数据结构移植(list和rbtree)
主要移植了内核中的 list,rbtree。使得这2个数据结构在用户态程序中也能使用。 同时用 cpputest 对移植后的代码进行了测试。(测试代码其实也是使用这2个数据结构的方法) 内核代码的如下文件:(内核版本 v3.2 debian 7.5源码) include/linux/list.h (删除了 hlist 相关内容) include/linux/rbtree.h lib/rbtree.c 对上面的代码进行了一些简化,只留了常用的函数。同时删除了其中和内核相关的部分。 主要内容: list 介绍 (循环双向链表) rbtree 介绍 1. list 介绍 (循环双向链表) 1.1 简介 Linux中的链表用法与一般数据结构书中介绍的用法有些不一样。 Linux内核中,为了保证链表的通用性,将链表的节点结构单独抽取了出来,也就是将链表的结构和链表的数据分开定义。 一般数据结构的书中介绍到的链表都是将链表的数据和链表的结构一起定义的。 注: 具体介绍可以我之前的博客参见: http://www.cnblogs.com/wang_yb/archive/2013/04/16/3023892.html 中的 1.2节 里面很重要的一点就是:链表结构和数据分开后,是如何通过链表节点结构来获取数据的? 带有safe的函数或者宏都是可以用于多线程的 1.2 修改部分