|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
内核链表list.h文件剖析 ' e% P" |2 [+ c) G7 u
. v2 o/ G/ D' _" {9 }1 A一、内核链表的结构【双向循环链表】
7 v+ n( `1 Z4 A
4 `; C" y: P9 |5 b1 K7 f
. a# c2 r! m) \+ {+ ? 内核链表的好主要体现为两点,1是可扩展性,2是封装。可以将内核链表复用到用户态编程中,以后在用户态下编程就不需要写一些关于链表的代码了,直接将内核中list.h中的代码拷贝过来用。/ h: C( G3 a5 |; {( X$ E$ A
6 e: ?+ c9 L% ~4 Z7 m: k2 }4 R' f
1 h% V5 H3 H* g* t: u6 `- struct list_head
- {
- struct list_head *next, *prev;
- }; // 包含了两个指向list_head结构体的指针next,prev[后驱和前驱]
' S1 K3 } A {4 k6 m4 Y8 Z5 m8 `5 [, f& n 2 O' d7 [, t) X [6 l( {6 R3 z
4 D- Y1 r1 x% k
) f9 t. d' Q/ p1 a2 d2 J6 [
$ z2 P9 Y& M+ H" S5 _1 i4 E9 J二、内核链表常用接口8 G2 w2 [1 o3 m0 Y8 }- Q5 f8 c2 p
9 f! T0 t" t& h. j
# T: S2 g; A- _/ G1、INIT_LIST_HEAD:创建链表
: @7 h1 i- T% \# |; W9 } X& a
9 T1 g3 C% i' Y. P0 ?
k1 C2 @, b; Z, G: N V. ]1 x# z. J5 T* l( v! v
4 t+ p; N9 b. p( q
' z# ^& b7 P. u& ^
: F. m% Y# z g$ s/ e8 }5 I$ B9 [5 ]" y
`) |. O+ P* N% p4 I |
|