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

最近更新

内蒙古实验小学二年级数学上学期每周一练试题.. 4页

内蒙古2019-2020年度保育员上学期考试试题试题.. 12页

体育委员竞选演讲稿与体育局对群体体总工作调.. 8页

【灯谜】趣味儿童灯谜(二)与【灯谜】:趣味儿.. 2页

2025年度夫妻经济互助及家庭危机应对协议书 8页

2025年度大连正规报废车买卖及拆解服务协议 9页

2025年度大学实习生实习期间人身意外伤害保险.. 8页

2025年度多人合伙经营茶艺馆合作协议书 9页

2025年度外墙修复施工安全教育培训合同 8页

2025年度塑料粒子生产废弃物处理与资源化利用.. 9页

2025年度城市安全监测劳务承包合同协议书 9页

2025年度土建施工安全监理与施工方合作协议 9页

2025年度土地使用权抵债资产评估与清收服务协.. 8页

2025年度团购商铺,含租金补贴及广告位合作 9页

2025年度商铺租赁协议书(包括品牌推广、装修.. 7页

人工智能在能源经济学中的角色-全面剖析 25页

2025年度商业活动场地租赁及安全保障协议 9页

2025年度员工薪资协议书及员工激励计划 8页

2025年度员工入职及培训考核及奖励协议 7页

2025年度合同装订订书钉质量检测及验收标准合.. 9页

2025年度合伙租用物联网办公室合同 9页

2025年度叉车租赁安全协议责任书(环保设施维.. 9页

2025年度厂房买卖定金协议,含厂房附属设施配.. 9页

2025年度单位员工培训蛋糕卡订购服务协议 8页

2025年度医院医生个人雇佣协议(口腔科专家).. 7页

2025年度医疗耗材国际物流及清关服务合同 8页

2025年度劳动合同法条在智慧城市建设应用规范.. 9页

2025年度加油站安全管理与应急预案合同 9页

2025年度办公室搬迁与搬迁后网络布线合同 9页

2025年度分手后双方分手后财产分割及债权债务.. 11页