文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

linux内核中list链表的源码分析

2023-06-06 01:40

关注

这篇文章将为大家详细讲解有关linux内核中list链表的源码分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

linux kernel里的很多数据结构都很经典, list链表就是其中之一,小编将从以下几方面介绍list链表:list的定义、list提供的操作方法、注意事项、使用实例。

前言

linux kernel里的很多数据结构都很经典, list链表就是其中之一

list链表

1  List 所在文件

List的所有操作可以在 include/linux/list.h找到;

List head的定义可以在 include/linux/types.h找到;

2  定义

实际上这就是一个双向循环链表, 且有一个头指针

list head的定义:

linux内核中list链表的源码分析

这个定义中只有前向和后向指针,没任何的数据部分, 那我们基本上就知道了, 它不是被单独使用的,而是把它嵌入到用户定义的struct中, 将用户定义的数据结构串起来,作成list;

思想很巧妙, 对用户定义的数据结构侵入性很小, 实现了c++中std::List模板的功能;

虽然这个定义是叫head, 但其实嵌入到用户定义的数据结构中的也是这个.

3  list提供的操作方法

初始化

linux内核中list链表的源码分析

插入操作

将一个元素插入到两个元素之间, 即将 new插入到prev和next中, 这个函数是下面在头部和尾部插入的实现基础

linux内核中list链表的源码分析

在头部插入, 在头指针和第一个元素间插入

linux内核中list链表的源码分析

在尾部插入,在最后一个元素间和头指针间插入, 因为是循环链表嘛~

linux内核中list链表的源码分析

删除操作 

删除两个元素之间的元素

linux内核中list链表的源码分析

删除一个已知元素entry

linux内核中list链表的源码分析

替换操作

都是指针的变换

linux内核中list链表的源码分析

移动操作

将一个元素移动到另一个list的头部

linux内核中list链表的源码分析

将一个元素移动到另一个list的队尾

linux内核中list链表的源码分析

拆分操作

将一个队列由指定的位置拆成两个队列


list是新队列的head指针, 包括的元素从原head队列的第一个元素到entry, head队列仅包括余下的元素

linux内核中list链表的源码分析

合并操作

将list列表中除了list本身插入到prev和next之间

linux内核中list链表的源码分析

将一个列表插入到另一个列表的头部

linux内核中list链表的源码分析

将一个列表插入到另一个列表的尾部

linux内核中list链表的源码分析

list_entry宏

按之前说的, 这个list_head都有要嵌入到用户定义的struct中,这个宏就是由这个list_head ptr来获取当前所处的struct对象的指针, 用了linux的经典宏定义 container_of

linux内核中list链表的源码分析

一堆宏定义, 用来各种遍历, 获取entry

4  注意事项

只说一个,就是多线程操作同一个list, 还是需要加锁

5  使用实例

linux内核中list链表的源码分析

关于linux内核中list链表的源码分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯