15 Linux内核链表.ppt

15 Linux内核链表.ppt

ID:48721240

大小:104.50 KB

页数:11页

时间:2020-01-20

15 Linux内核链表.ppt_第1页
15 Linux内核链表.ppt_第2页
15 Linux内核链表.ppt_第3页
15 Linux内核链表.ppt_第4页
15 Linux内核链表.ppt_第5页
资源描述:

《15 Linux内核链表.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Linux内核链表Linux内核链表链表是一种常用的数据结构,它通过指针将一系列数据节点连接成一条数据链。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。简介通常链表数据结构至少包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链表又可以分为单链表、双链表、循环链表等多种类型。单向链表双向链表内核链表在Linux内核中使用了大量

2、的链表结构来组织数据。这些链表大多采用了[include/linux/list.h]中实现的一套精彩的链表数据结构。内核链表链表数据结构的定义:structlist_head{structlist_head*next,*prev;};list_head结构包含两个指向list_head结构的指针prev和next,由此可见,内核的链表具备双链表功能,实际上,通常它都组织成双向循环链表。链表操作Linux内核中提供的链表操作主要有:初始化链表头INIT_LIST_HEAD(list_head*head)插入节点list_add(str

3、uctlist_head*new,structlist_head*head)list_add_tail(structlist_head*new,structlist_head*head)链表操作删除节点list_del(structlist_head*entry)提取数据结构list_entry(ptr,type,member)已知数据结构中的节点指针ptr,找出数据结构,例:list_entry(aup,structautofs,list)链表操作遍历list_for_each(struclist_head*pos,strucli

4、st_head*head)例:structlist_head*entry;structlist_headcs46xx_devs;//链表头list_for_each(entry,&cs46xx_devs){card=list_entry(entry,structcs_card,list);if(card->dev_midi==minor)break;}实验内核链表操作编写内核模块1、完成结点的插入3、完成结点的删除2、完成链表的遍历(遍历时访问结点中的数据)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。