仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 428|回复: 8
打印 上一主题 下一主题

[其他Linux] 给大家带来浅析Linux内核中的轮回链表布局

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 12:52:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
看不懂man文档的人.在linux中,命令可分为系统基本命令和应用程序命令.系统基本命令是所有的unix类系统都支持的命令,走到哪都不变,只要是unix类系统上就肯定有.
文章中援用的代码来历于LXR,所剖析的内核版本是v2.6.31。
  linux内核经由过程界说list_head和关于list_head上的一组操纵完成对分歧范例的轮回链表的同类操纵,这类做法制止了关于分歧数据范例的轮回链表界说反复的操纵函数,使代码失掉了充实的利用,是一种非常无效的编程办法。
  list_head的界说:
  19structlist_head{
  20structlist_head*next,*prev;
  21};
  接着我们来看恣意一种数据布局的轮回链表,链表的每一个节点中到场了一个list_head范例的变量,节点的其他变量恣意。(注重:每一个指针所指向的地位不是节点数据的肇端地位,而是list_head范例变量的入手下手地点。)
  经由过程如许一种完成体例创建的链表,节点都是经由过程list_head范例的变量相毗连的,那末我们怎样由list_head范例得指针失掉两头某个节点范例的指针呢?我们来看如许一个操纵:list_entry(p,t,m),个中t是链表的节点范例,m是节点内list_head范例的变量名,p是指向该变量的指针,该操纵用于从list_head指针失掉指向链表节点的指针。
  334#definelist_entry(ptr,type,member)
  335container_of(ptr,type,member)
  650#definecontainer_of(ptr,type,member)({
  651consttypeof(((type*)0)->member)*__mptr=(ptr);/*_mptr与ptr范例值都不异,是ptr的一个拷贝*/
  652(type*)((char*)__mptr-offsetof(type,member));})/*地点减往偏移量(以字节为单元)便可*/
  24#defineoffsetof(TYPE,MEMBER)((size_t)&((TYPE*)0)->MEMBER)/*盘算出变量在布局中的偏移量(以字节为单元)*/

</p>
Linux的常用命令find,察看man文档,初学者一定会觉得太复杂而不原意用,但是你一旦学会就爱不释手。
莫相离 该用户已被删除
沙发
发表于 2015-1-18 09:58:42 | 只看该作者
尽我能力帮助他人,在帮助他人的同时你会深刻巩固知识。
精灵巫婆 该用户已被删除
板凳
发表于 2015-1-23 19:31:25 | 只看该作者
不同于Windows?系统需要花钱购买,因为Linux的核心是免费的,自由使用的,核心源代码是开放的。
小女巫 该用户已被删除
地板
发表于 2015-2-7 00:46:26 | 只看该作者
随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在。
金色的骷髅 该用户已被删除
5#
发表于 2015-2-19 08:50:08 | 只看该作者
尽量不要提问纯属是扯蛋.学习Linux特别是自己一个人初学入手的时候没人教很困难.当然如果可以的话平时多去买些Linux书...对学习Linux很有帮助.
柔情似水 该用户已被删除
6#
发表于 2015-3-6 14:35:18 | 只看该作者
掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-3-13 03:10:32 | 只看该作者
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
分手快乐 该用户已被删除
8#
发表于 2015-3-13 03:10:32 | 只看该作者
我想即使Linux高手也很难快速准确精练的回答你。
若天明 该用户已被删除
9#
发表于 2015-3-20 11:38:18 | 只看该作者
请问谁有Linux的学习心得的吗?简单的说说?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-25 00:57

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表