为什么要叫做“十月往昔”呢,是为了纪念我的原博客。
不知道为什么,突然想来一个新的开始——而那个博客存活至今刚好十个月,也有十个月里的文档。
十月往昔,总有一些觉得珍贵的,所以搬迁到这里来。
而这篇文章是在09.04.10里写的。
终归是一家之谈。
Jason Lee
————————————–cut-line
/*-------------------------------
include/linux/list.h -2.6.29
*/
该文件包含:
链表的初始化
19-21
行定义了一个list_head
结构,只有两个指向list_head
结构的指针,一个next
,一个prev
,作用显而易见。
23
行的宏LIST_HEAD_INIT(name)
与25
行的宏LIST_HEAD(name)
组合进行链表的初始化,即next
和prev
都指向自身。
25
行的静态内联函数INIT_LIST_HEAD(struct list_head *list)
同样是用来初始化链表,效果同上述一点。GNU
下的C
语言对C
进行了扩充,不再是ANSI C
,它里面增添了很多C++
的特性,所以对内核进行编译只能选用相应的GCC
。
INIT_LIST_HEAD
在有的文献中是以宏的形式出现:
链表的插入
这段程序在两个已知的节点中间插入一个新节点。这里选择的是条件编译,如果没有对CONFIG_DEBUG_LIST
进行宏定义,则定义了__list_add
这个静态内联函数,便于以下两个函数使用。
该函数在指定的head
节点后面插入一个新节点new
。
该函数将一个节点new
插在指定的节点head
之前。
链表的删除
该函数通过设置prev
和next
指针指向彼此,实现了删除二者之间节点的功能。但是这里我有个疑惑,删除的指针的释放在哪里实现。
该函数通过调用上面的内联函数实现节点的删除,这里的LIST_POISON1
和LIST_POISON2
是在linux
/
poison
.
h
定义的。此处仍然是条件编译。
链表节点的置换
静态内联函数list_replace
接受两个参数:old
和new
,并通过new
替换old
。而list_replace_init
函数则是通过调用list_replace
进行替换,之后调用INIT_LIST_HEAD
对被替换的old
进行链表初始化。
链表的移动
List_move
函数接受两个参数,第一个参数list
为想要移动的节点指针,第二个参数为目的地节点指针。该函数通过调用__list_del
函数实现list
节点的prev
和next
两个指针互指实现删除list
节点的效果,并且调用list_add
将list
节点插入到head
之后。
List_move_tail
函数将指定节点移到指定链表的尾部,成为尾节点。并且由于链表是循环的,所以移动的节点指向该链表head
节点。具体实现是通过目标节点的prev
和next
互指实现从原始链表中删除list
节点,之后通过调用list_add_tail
将list
节点插入到以head
为表首的链表尾部。
判断节点是否为链表的最后一个
通过判断节点的next
指向是否为表首来确定是否为last
。
判断链表是否为空
通过判断head
节点是否指向自身来判断链表是否为空。
此处函数的作用并不十分理解,对于绿色注释说明部分的Description
和NOTE
部分也是一知半解。单纯地翻一下NOTE
部分:如果没有经过同步化处理,那么如果要达到安全地使用list_empty_careful
这个函数必须限定当前能对指定节点发生的操作仅仅为list_del_init()
,比如当一个CPU
对它进行add
操作的时候不能使用该函数。
该函数能达到的效果是检查链表是否为空,并且检测是否有CPU
在修改当前指定节点的prev
和next
指针。
这里引用一段解释,来自杨沙洲:
“
Linux
链表另行提供了一个
list_empty_careful()
宏,它同时判断头指针的
next
和
prev
,仅当两者都指向自己时才返回真。这主要是为了应付另一个
cpu
正在处理同一个链表而造成
next
、
prev
不一致的情况。但代码注释也承认,这一安全保障能力有限:除非其他
cpu
的链表操作只有
list_del_init()
,否则仍然不能保证安全,也就是说,还是需要加锁保护。
”
判断链表是否只有唯一的一个节点
空表并不是一个节点都没有,唯一的节点也不是指只有一个节点,具体看函数代码我们便可以了解。当一个节点指针被执行LIST_HEAD
了以后,它的prev
和next
指针都指向自身,这便称为空表;而如果它的prev
和next
指针都指向仅有的第二个节点,那么它便称为仅有一个节点。
链表的切割
这里有三个参数,list,head,entry
。
假设原先有链表:head <-> node1 <-> node2 <-> node3 <-> entry <-> node4 <-> head
那么最后会得到链表1
:head <-> node4 <-> head
和链表2
:list <-> node1 <-> node2 <-> node3 <-> entry <-> list
。
这里最好自己画图模拟一下。
链表的合并
假设有两条链表:head <-> node1 <-> node2 <-> node3 <-> head
和:last <-> list <-> first
那么合并的结果是取代了head
:last <-> list <-> first <-> node1 <-> node2 <-> node3 <-> last
以下的合并函数都是调用第一个合并内联函数__list_splice
,区别只在于合并取代的位置以及是否对空出来的head
进行初始化,即调用INIT_LIST_HEAD
等宏。
分享到:
相关推荐
在中国古典文学的宝库中,宋代词作以其独特的韵味和深邃的内涵占有重要地位,其中晏几道的《临江仙》更是婉约词派的典范之作。通过梦后酒醒的场景,晏几道将个人情感与自然景物巧妙融合,以独特的艺术手法,展现了深...
《鹧鸪天》中所展现出的情感变化,反映了晏几道对美好往昔的怀旧和对现实命运的无奈。他性格中的独立和不羁,以及对世态炎凉的超然态度,都深深影响了他的文学创作。 在艺术风格上,晏几道的词作受到五代词人,尤其...
本文将根据《大堰河——我的保姆》教案的相关内容,深入分析这首诗的创作背景、人物关系、情感内核以及教学方法。 首先,《大堰河——我的保姆》是艾青以自己亲身经历为蓝本创作的一首诗。在这首诗中,艾青与...
教师资格考试、教师招聘考试资料——细数往昔之教育法律法规时间考点.pdf
教育资料
10. **感恩与敬意**:对老师们的敬意表达了对教育者无私付出的感激之情,他们的影响深远且持久。 这篇致辞提醒我们,尽管生活忙碌,但保持与旧友的联系,分享人生故事,对于个人的成长和情感满足至关重要。同时,它...
他在“二十余年如一梦,此身虽在堪惊”中表达了对时代巨变的感慨,以及对于个人命运的深切思考。此时的陈与义,不再是那个满怀壮志的青年,而是一个经历了战乱,目睹了国家兴衰的诗人。他在“闲登小阁看新晴”中表现...
在游历大梁(今河南开封)和宋州(今河南商丘)的过程中,李白目睹了曾经辉煌一时的梁园(梁苑)与宋平公的平台,这些历史遗迹与它们往昔的繁荣形成鲜明对比,触发了李白的灵感与情感。 黄河,作为北方的巨川,见证...
《鹧鸪天》的第二首,晏几道则是在回忆和怀念中展现出了对往昔欢愉时光的无限眷恋。在这首词中,宴会上的热闹场景被生动地刻画出来:彩袖轻舞、杨柳月下,还有那悠扬的歌声,这一切美好的画面都勾起了词人对过去的...
李清照,中国宋代杰出的女词人,以她的《如梦令》、《声声慢》等作品留名青史,而《苏幕遮》和《菩萨蛮》则是其词作中具有代表性的作品,展现了其深邃的艺术风格和复杂的情感世界。这两首词,一首写秋意愁思,一首写...
首先,我们关注的是标题中的"jdk-8u181-linux-and-linux.zip",这表明这个压缩包包含了适用于两种操作系统的JDK版本——Windows和Linux。其中,"u181"是JDK 1.8的一个更新版本号,意味着它包含了自1.8发布以来的若干...
词中通过残雪、冷月等意象,营造出一种寂寞孤独的氛围,进而引出“知君何事泪纵横”,表达出词人在无尽的惆怅中回忆往昔,感叹人生的无奈。整首词情感深沉,语言优美,展现了纳兰性德词作的特色——情真意切,意蕴...
在浩瀚的中国古典诗词海洋中,小令是其中一颗璀璨的明珠,它以简短的篇幅和深邃的意境,传达出诗人的情感和对生活的观照。《填词指要[上卷]》作为一份专业指导文献,为我们揭开了小令这一独特诗歌形式的神秘面纱,让...
回顾往昔,2012年武汉“9·13”施工电梯事故的惨痛教训至今让人记忆犹新,该事件中操作不当导致的人员伤亡给整个建筑行业敲响了警钟。事故的背后暴露出一个共同的问题:非专属司机的操作隐患。在正常施工过程中,...
而当词人行至“旧时茅店社林边,路转溪头忽见”时,一个熟悉的场景猝然出现在眼前,这种突如其来的喜悦和惊喜,不仅为词作增添了生机与活力,也表达了词人在战乱岁月中对往昔宁静生活的怀念。 辛弃疾的词,往往富有...
李煜的《虞美人》中,“春花秋月何时了,往事知多少”便是将四季更替与人生过往相联系,实的景物唤起虚的记忆,表达出诗人对往昔岁月的无限留恋和感慨。 虚实结合的艺术表现手法不仅体现了古典诗词的艺术特色,也...
随着七月的到来,我们站在半年的分界点,回顾往昔,展望未来。对于那些需要向团队、领导甚至客户展现自己或团队上半年工作成果的人来说,一份精美的工作总结报告至关重要。它不仅是对成果的展示,更是对个人或团队...
在中国古典文学的宝库中,诗词一直占据了极为重要的位置。它们以精炼的语言和深邃的情感,折射出作者的思想感情以及对自然和人生的独特体验。本篇学习教案主要围绕两首相见欢浣溪沙——李煜的《相见欢》和晏殊的...
在这个时期,很多知识分子失去了往昔的政治地位和社会影响力,转而在文学创作中寻求心灵的慰藉和自我价值的实现。元散曲的兴起和发展正是这一背景下文化表达方式转变的具体体现。 #### “蛤蜊味”的形成原因 元...