1 / 7
文档名称:

linux内核链表.doc

格式:doc   大小:255KB   页数:7页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

linux内核链表.doc

上传人:zbfc1172 2018/6/2 文件大小:255 KB

下载得到文件列表

linux内核链表.doc

相关文档

文档介绍

文档介绍:双向循环链表在 LINUX kernel 中的实现
Email:lsl@
blog:http://blog./vincent040
版权声明:版权保留。本文用作其他用途当经作者本人同意,转载请注明作者姓名
All Rights Reserved. If for other use,must Agreed By the this text,please claim the writer's name.
Copyright (C) 2010 vincent lin
如果我们把内核中的用链表表示的数据结构画出来,那将是一盘又复杂又美味的。。。。意大利面。。。就像在之前分析的VFS那样。
内核中的链表经典实现,改造一下,体会一下,玩味一下。
内核的经典双向循环链表结构跟普通教材上教的双向循环链表的实现不大一样,平常我们会把数据存储在节点中,再把节点连接起来形成链表,但是内核中的双向循环链表是用一个独立的结构体来表示的,如下:
struct list_head
{
    struct list_head *prev;
    struct list_head *next;
};
正如你所见,该结构体除了两个指向本身的指针之外别无他物,实际上,它们是用来被“嵌入”其他数据结构中的,以此来将各个节点串起来。
比如,我们可以定义一个这
样的结构体:
struct kool_list
{
    int to;
    struct list_head list;
    int from;
};
这个结构体包含了 list_head,因此我们可以将多个这样的 kool_list 结构体串起来形成一个双向循环链表!下面我们就来通过对一个例子的分析看一下内核是怎么操作这种链表的(由于双向循环链表在内核中使用非常频繁,因此对链表的操作可谓是精益求精,力求高效,我们拭目以待!)
假设现在我想要创建一个包含5个 kool_list 节点的双向循环链表,节点当中的 to 字段和 from 字段随便放两个整数,创建完之后用不同的方式遍历它,然后释放它。如果是内核,她会怎么做呢?
首先不管三七二十八,我们来定义一个 kool_list 结构体,然后初始化它:
struct kool_list  mylist;
INIT_LIST_HEAD(&());
其中宏定义如下:
#define  INIT_LIST_HEAD(ptr)  do {  \
    (ptr)->next = (ptr); \
    (ptr)->prev = (ptr);  \
}while(0)
这相当于把第一个节点 mylist 中的字段 list 里面的两个指针自己指向了自己,构成一个单节点的双向循环链表。
至于宏定义中的do ... while循环是为了能在宏替换语句中使用分号,使其看起来更自然。
好了,有了头结点,我们可以循环地从键盘获取5组数据,分别存储到5个节点当中,连接起来,形成一个双向循环链表:
struct kool_list *tmp;
for(i=5; i!=0; --i)
{
    tmp = (strict kool_list *)malloc(si

最近更新

TZYH型测厚折射地震仪的应用 2页

骨质疏松基础知识 32页

2025年幼儿园学英语怎么教 4页

2025年幼儿园学期工作总结(7篇) 22页

2025年幼儿园学年工作计划书 27页

骨科肢体肿胀分级 11页

TM85型土壤密度计(比重计)特点和使用方法 2页

TK系列齿轮减速器轴向力的分析与改进 2页

Ti 3Al基金属间化合物氢脆敏感性研究 2页

2025年幼儿园大班群体的活动方案 11页

THY-1型搪瓷测厚仪技术鉴定会在广东召开 2页

TESA微处理器式数显高程规常见故障及排除方法.. 2页

北京市顺义区2015-2016学年八年级下期末数学试.. 26页

2025年幼儿园大班教师心得体会 17页

2025年幼儿园大班幼儿体育活动策划案 14页

2025年幼儿园大班安全主题教案8篇 18页

灯光多媒体课件 32页

2025年幼儿园大班元旦教学活动策划方案 11页

2025年幼儿园大班亲子活动方案2025年最新 13页

STW试验通讯卫星远地点发动机真空总冲测试技术.. 2页

船舶间浸部分冲洗缓蚀剂的研究 2页

2025年幼儿园夏秋季防溺水工作方案 24页

2025年幼儿园培训实施方案 40页

2025年幼儿园国庆策划方案 26页

人教版三年级下册数学期中测试卷(名师推荐).. 4页

图书管理系统调研报告 12页

2023年贵州省中考物理试卷【含答案】 9页

完美修改版《矿山井巷工程施工及验收规范》GB.. 80页

弥勒礼佛忏-闻者无量福,诵者福无量 32页

天弛专业挽联打印软件v3.2.0介绍(共2页) 2页