ChinaUnix.net
相关文章推荐:

内核链表

内核链表 内核中的链表结构:[节选自include/linux/list.h] struct list_head { struct list_head *next, *prev; }; 看其结构很简单,很明显这个结构具有双向链表的功能。 它没有数据域,所在对它的操作和通常的链表操作有一点点的区别,后面会作分析。 通常包含数据域的链表结构像下面的定义: struct list_head { struct list_head *next, *prev; ElemType data; }; 链表操作接口: 1.声明和初始化。 利用链表节点...

by tacoe - Linux文档专区 - 2010-01-05 16:38:21 阅读(848) 回复(0)

相关讨论

链表是一种常用的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销...

by luozhiyong131 - 移动操作系统 - 2011-12-23 03:03:00 阅读(675) 回复(0)

操作系统内核经常需要维护数据结构。内核有标准的循环链表、双向链表的实现。在文件中定义了一个list_head类型简单结构; struct list_head {     struct list_head *next,*prev; }     通用链表的常用用途是将某一个数据结构本身串成链表,或将某些链表与一个数据结构联系起来,这两种请况实质上都是由结构list_head组成链表,只是list_head所“背负”的负载不一样。下面分别举例说明这两种用途。...

by msj0520 - Linux文档专区 - 2008-10-31 11:56:06 阅读(569) 回复(0)

遍历: 这部分代码比较长,不过有些还是比较相似的,所以不用担心,我们来一步一步往下看。 425#define [color="#0000ff"]list_entry ( [color="#0000ff"]ptr , [color="#0000ff"]type , [color="#0000ff"]member ) \ 426 [color="#0000ff"]container_of ( [color="#0000ff"]ptr , [color="#0000ff"]type , [color="#0000ff"]member ) 427[color="#0000ff"] List_entry()这个宏又牵扯到一个宏container_of...

by chenjifeng - Linux文档专区 - 2008-10-12 20:10:17 阅读(836) 回复(0)

链表数据结构简介 通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链表又可以分为单链表、双链表、循环链表等多种类型,下面分别给出这几类常见链表类型的示意图: 1. 单链表 图1 单链表链表是最简单的一类链表,它的特点是仅有一个指针域指向后继节点(next),因此,对单链表的遍历只能从头至尾(...

by chenjifeng - Linux文档专区 - 2008-10-12 19:57:52 阅读(1049) 回复(0)

今天看了linux内核链表,发现2.6版本之后,有许多hash链表,但每个元素都用链表串了起来,我不明白,既然所有元素都用链表串了起来,那么在查找或插入时,如何hash呢,冲突怎么解决的呢,谢谢

by skyguide - 内核源码 - 2008-10-06 19:21:56 阅读(1833) 回复(7)

今天在看流量控制的代码时,特别留意了一下list_head的结构,发现它只有指针域,没有数据域,觉得有点困惑,一般的链表节点都包括两部分:数据域和指针域。linux里为何能这么用呢?股沟一下,原来是这么回事。在Linux内核链表中,不是在链表结构中包含数据,而是在数据结构中包含链表节点。 深入分析 Linux 内核链表 级别: 初级 杨沙洲 ( [email=pubb@163.net?subject=%E6%B7%B1%E5%85%A5%E5%88%86%E6%9E%90%20Linux%20%E5%...

by wuzhao - Linux文档专区 - 2008-04-02 23:17:44 阅读(493) 回复(0)

深入分析 Linux 内核链表 内容: 一、 链表数据结构简介 二、 Linux 2.6内核链表数据结构的实现 三、 链表操作接口 四、 扩展 五、 示例 参考资料 关于作者 对本文的评价 订阅: developerWorks 时事通讯 杨沙洲 国防科技大学计算机学院 2004 年 8 月 本文详细分析了 2.6.x 内核链表结构的实现,并通过实例对每个链表操作接口进行了详尽的讲解。 一、 链表数据结构简介 链 表是一种常用的组织有...

by prohorry - Linux文档专区 - 2005-04-17 13:55:23 阅读(1157) 回复(0)

完成了上一个作业,又来了一个project。这个project要求创建一个lock机制(玩具性质的,并非真正的)。这些锁各自属于不同的lock group name,通过调用create_lock(char *name, int perms)(自己写的system call) 可以创建一个lock。有两个问题:1)如何在内核里创建链表来存储这些lock?可以直接调用sys/queue.h里的函数吗?2)既然有多个lock group,是否要为每一个lock group开辟一个链表,还是可以把所有的lock放在一个链表中? ...

by jlwcb - 内核源码 - 2011-12-20 20:47:57 阅读(1021) 回复(1)

为了完成对内核双向循环链表的彻底掌握,我搜索了一些重要信息。可是到最后还是被内核的代码给卡住了。我的过程如下: 首先在linux-2.6.30.4/include/linux/list.h里找到内核的双向链表结构: struct list_head { struct list_head *next, *prev; }; 它是一个只有指针域而没有数据域的结构,这样的好处就是灵活性很强!并且控制起来也很方便。但是有个小问题: 例如我使用了这样一个结构: struct mylist{ char data;...

by lanlovehua - Linux文档专区 - 2009-10-28 09:45:18 阅读(853) 回复(0)

以前看《linux内核设计与实现》遇到个问题就是,内核中定义了一个奇怪的双向链表结构,其中只有两个指针域,并不见数据,不知道为啥,今天下了陈莉君老师的PPT,终于知道了一些原因。 陈莉君老师先是分析了为什么需要链表?一开始就用数组与链表的对比,我想大部学过数据结构的都应该知道一些数组与链表的优缺点。可是,后来陈老师最后给出一个结论:“ Normal 0 7.8 磅 0 2 false false false ...

by wyl19831016 - Linux文档专区 - 2009-06-04 09:08:59 阅读(1110) 回复(0)