作者:百色金融新闻网日期:
返回目录:经济新闻
前戏
本文我们来讲讲内核链表,很久之前当我第一次看到内核通用链表的时候,我被精简的代码,巧妙的思路惊呆了。人世间还有此等巧妙之物(原谅我的夸张),只有前驱和后继指针,而没有数据域(当时觉得很奇怪)。内核通用链表,在linux源代码下include/Lish.h下,具备通用性,使用非常方便。只需要在结构定义一个链表结构就可以使用。好了,我们好好的了解下吧。
常用链表介绍
我们都知道链表是最基础的数据结构,通常可以分为,单链表,双链表;还可以分为单向链表和循环链表。通常我们的链表定义是这样子的:
链表节点中包含数据域(data)和指针域(next)。链表通常包含一个头结点,不存放数据,方便链表操作。单向的链表结构如下图:
双向循环链表结构如下图所示:
这样数据域和指针域在一起的结构为什么不好?其实这样结构降低了链表的通用性了,扩展性太差,按照上图例子,只能存储的是特定的数据类型。
内核通用链表
那我们看看内核链表是怎么做的。首先我们看下结构定义如下图:
看个直观的图:
那怎么使用这个链表呢?
只需要在结构体中定义一个链表类型(一定要放在最下方)的数据即可。例如定义一个data_info链表:
定义一个data_info链表,data_info data_info_list;
通过data_info_head进行链表操作。通过container_of和offsetof,可以根据data_info_head的地址找出data_info的起始地址。为了方便大家理解,下图展示了链表的整体结构图
- 上一篇:手机丢了如何找回_现在如果手机丢了怎么办
- 下一篇:销售培训计划书_销售管理培训内容
相关阅读
深入理解linux内核架构_深入分析linux内核源代码
- 百色金融新闻网经济新闻
- 前戏 本文我们来讲讲内核链表,很久之前当我第一次看到内核通用链表的时候,我被精简的代码,巧妙的思路惊呆了。人世间还有此等巧妙之物(原谅我的夸张),只有前驱和后继指针
深入浅出分析Linux内核链表(图解)-结构图
- 百色金融新闻网财经要闻
- 结构图,前戏本文我们来讲讲内核链表,很久之前当我第一次看到内核通用链表的时候,我被精简的代码,巧妙的思路惊呆了。
京东用户数据泄露,12G数据包在黑市售卖-京东数据泄露
- 百色金融新闻网理财保险
- 京东数据泄露,近日,有自媒体称在黑市上发现了京东一个关于用户隐私的12G数据包再出出售。数据包的内容包括用户的QQ号、手机号、邮箱、身份证、收货地址等多重数据。对此,京东
《中国金融》|加密货币的货币职能变化-货币的职能
- 百色金融新闻网理财保险
- 货币的职能,中国在加密货币领域都有所滞后,中国如再不能有所行动,将只能接受其他国家制定的游戏规则作者|曲双石包宏「中国人民大学国际货币研究所。
给爱情上保险,靠谱吗?-爱情保险
- 百色金融新闻网理财保险
- 爱情保险,光棍节来临,“爱情保险”受追捧,这靠谱吗?所谓的“爱情保险”大多是以“主险(不测险)+多种附加险(婚礼上赠予玫瑰花/钻石/礼金等)”保单设计模式推出,在互联
电子商务是干什么的?-什么是电子商务
- 百色金融新闻网金融新闻
- 什么是电子商务,说起电子商务的兴起,或多或少跟“马爸爸”马云有关系,他发家致富的传奇可谓推进了电子商务行业的发展。但很多人单纯地认为电子商务就是淘宝,就是天猫,或者
关键词不能为空