Skip to content

Commit cbdafb0

Browse files
author
deployBot
committed
Deploy at Fri May 10 10:31:43 UTC 2024
1 parent 71941d1 commit cbdafb0

File tree

5 files changed

+5
-3
lines changed

5 files changed

+5
-3
lines changed

_images/list_evolution.svg

+1
Loading

_images/list_evolution1.svg

+1
Loading

_sources/labs/kernel_api.rst.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ printk
224224
225225
列表的演变可以在下图中看到:
226226

227-
.. image:: ../img/list_evolution.svg
227+
.. image:: ../img/labs/list_evolution.svg
228228
:width: 1000px
229229

230230
从上面的例子可以看出,通过 :c:macro:`list_add` 宏引入了堆栈类型的行为,并使用了标记。

labs/kernel_api.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -351,7 +351,7 @@ <h3>列表<a class="headerlink" href="#section-9" title="永久链接至标题">
351351
</pre></div>
352352
</div>
353353
<p>列表的演变可以在下图中看到:</p>
354-
<a class="reference internal image-reference" href="labs/../img/list_evolution.svg"><img alt="labs/../img/list_evolution.svg" src="labs/../img/list_evolution.svg" width="1000px" /></a>
354+
<a class="reference internal image-reference" href="../_images/list_evolution.svg"><img alt="../_images/list_evolution.svg" src="../_images/list_evolution.svg" width="1000px" /></a>
355355
<p>从上面的例子可以看出,通过 <code class="xref c c-macro docutils literal"><span class="pre">list_add</span></code> 宏引入了堆栈类型的行为,并使用了标记。</p>
356356
<p>通过上述示例可以看出,定义和使用一个(双向)列表的方法是通用的,并且同时不引入额外的开销。<code class="xref c c-type docutils literal"><span class="pre">struct</span> <span class="pre">list_head</span></code> 用于维护列表元素之间的链接。可以注意到,对列表的迭代也是使用这个结构进行的,使用 <code class="xref c c-macro docutils literal"><span class="pre">list_entry</span></code> 可以获取列表元素。这种实现和使用列表的思想并不新鲜,在 20 世纪 80 年代,Donald Knuth 的《计算机程序设计艺术》中已经有描述。</p>
357357
<p><code class="file docutils literal"><span class="pre">include/linux/list.h</span></code> 头文件中介绍并且解释了几个内核列表函数和宏定义。</p>

so2/lab2-kernel-api.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,7 @@ <h3>列表<a class="headerlink" href="#section-9" title="永久链接至标题">
383383
</pre></div>
384384
</div>
385385
<p>列表的演变可以在下图中看到:</p>
386-
<a class="reference internal image-reference" href="so2/../img/list_evolution.svg"><img alt="so2/../img/list_evolution.svg" src="so2/../img/list_evolution.svg" width="1000px" /></a>
386+
<a class="reference internal image-reference" href="../_images/list_evolution1.svg"><img alt="../_images/list_evolution1.svg" src="../_images/list_evolution1.svg" width="1000px" /></a>
387387
<p>从上面的例子可以看出,通过 <code class="xref c c-macro docutils literal"><span class="pre">list_add</span></code> 宏引入了堆栈类型的行为,并使用了标记。</p>
388388
<p>通过上述示例可以看出,定义和使用一个(双向)列表的方法是通用的,并且同时不引入额外的开销。<code class="xref c c-type docutils literal"><span class="pre">struct</span> <span class="pre">list_head</span></code> 用于维护列表元素之间的链接。可以注意到,对列表的迭代也是使用这个结构进行的,使用 <code class="xref c c-macro docutils literal"><span class="pre">list_entry</span></code> 可以获取列表元素。这种实现和使用列表的思想并不新鲜,在 20 世纪 80 年代,Donald Knuth 的《计算机程序设计艺术》中已经有描述。</p>
389389
<p><code class="file docutils literal"><span class="pre">include/linux/list.h</span></code> 头文件中介绍并且解释了几个内核列表函数和宏定义。</p>

0 commit comments

Comments
 (0)