linux内核中的Hlist与List_head结构
List_Head
操作系统内核经常需要维护数据结构。内核有标准的循环链表、双向
链表的实现。在
<Linux/list.h>
文件中定义了一个
list_head
类型简单结构:
struct
list_head {
struct list_head *next, *prev;
};
通用链表的常用用途是将某一个数据结构本身串成链表,或将某些链
表与一个数据结构联系起来,这两种情况实质上都是由结构
list_head
组成链表,只是
list_head
所
“
背负
”
的负载不一样。下面分别举例说明这两种用途。
以下示例说明了如何将某一个数据结构本身串成链表,并对链表进行
操作,同时还说明
list_head
结构的实现与使用。
示例:将某一个数据结构本身串成链表。
(
1
)加入
list_head
结构成员。
假设有一个
example_struct
结构需连接成链表,因而在其结构里面加上
list_head
成员,就组成了结构链表,如下:
struct
example_struct {
struct list_head list;
int priority;
……//
其他成员
};
在
example_struct
结构中的
list
成员,用来将
example_struct
结构串成链表。可理解为
list_head“
背负
”
的负载是
example_struct
结构。
(
2
)创建
list_head
结构。
使用前必须申请链表头并用
INIT_LIST_HEAD
宏来
初始化链表头。可使用两种方法。
方法
1
:
struct
list_head example_list;
INIT_LIST_HEAD(&example_list);
方法
2
:
LIST_HEAD(example_list);
其中,这两个宏在
include/Linux/list.h
中定义如下:
#define
LIST_HEAD(name) \
struct list_head name = LIST_HEAD_INIT(name)
#define
INIT_LIST_HEAD(ptr) do { \
(ptr)->next = (ptr); (ptr)->prev = (ptr); \
} while (0)
宏定义
INIT_LIST_HEAD
初始化了链表头,即向前、向后的指针都指向链表头。这样,就已
初始化了一个
example_list
的链表头,以后就可以向链表中增加链表元素了。
(
3
)链表与用户结构连接。
list_entry
宏将
exmplelist
链表与
exmple_struct
结构类型连接起来。
有两项链表的链表头
List_entry
宏的效果
含
list_head
相关文档:
总览
用iptables -ADC 来指定链的规
则
,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......
Linux, named after the inventor, Linus Torvalds, is a so different OS for everyone against Windows. To everyone who used to use Windows, Linux need us to do more for everything which we usually do by computer, such as playing a video.
Someone says, Linux is for the ones who are good at the computer ......
网上关于fork()文章都说fork()来创建子进程,利用返回值的不同来执行不同的代吗段.但都没有说到如何实现不同的返回值.下面我将和你来说说这个问題:
考虑如下代码:
int &nb ......
Linux多进程相关内容
版权声明:可以任意转载,但转载时必须标明原作者charlee、原始链接http://tech.idv2.com/2006/10/14/linux-multiprocess-info/以及本声明。
最近在用 perl 写一个Linux下的多进程守护进程,因此研究了一下Linux下的进程相关的知识。现将心得总结一下。主要是关于进程创建和回收。
fork
SIGCHLD信 ......