linux内核中的Hlist与List_head结构
List_Head
操作系统内核经常需要维护数据结构。内核有标准的循环链表、双向链表的实现。在文件中定义了一个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的定制结构
next
prev
list_head结构
空链表
中的链表
下面这个代码行就是从examplelist链表中得到节点对应的example_struct结构指针,其中ptr是exampleli
相关文档:
PHP在运行的时候,直接kill掉,有肯能造成数据的丢失。幸好php模块,有针对signal的处理。
处理方式,首先检查有没有安装 PCNTL 模块
然后可以在一个包含文件中,添加以下代码
global $exitFlag;
$exitFlag = false;
// 增加linux信号量处理
if (DIRECTORY_SEPARATOR != '\\') {
pcntl_signal(SI ......
1.java.sun.com/j2se/1.4.2/download.html">http://java.sun.com/j2se/1.4.2/download.html 下载一个Linux Platform的JDK,建议下载RPM自解压格式的(RPM in self-extracting file,j2sdk-1_4_2_06-linux-i586-rpm.bin);
2. 上载到Linux服务器上,在shell下执行命令:
[root@ ......
STAT(该行程的状态)
D: 不可用信号中断的睡眠状态
R: 正在执行或处于执行队列中
S: 可以用信号中断的睡眠状态
T: 暂停执行
Z: 僵死状态
------------------------------------
W: 没有足够的记忆体分页可分配
<:>
N: 低优先序的行程&nbs ......
在向大家详细介绍Linux mysql之前,首先让大家了解下Linux mysql,然后全面介绍Linux mysql,希望对大家有用。
1. Linux mysql安装:
$ yum install mysql-server
2. Linux mysql修改root密码:
$ mysqladmin -u root password
your_new_passwd
3. 启动Linux mysql服务
$ /etc/init.d/mysqld start
4. 添加为系统� ......
制作可移动的linux系统(Ubuntu)
1、光盘启动,安装复制到移动硬盘,将grub安装到dev/sda。
2、复制完后重启,光盘启动,安装启动界面输入rescue,进入急救模式,选择挂载分区时,选择系统所在硬盘和分区。
3、ctrl-Alt-F2,打开新窗口。
CODE:mount -tproc proc /target/proc
chroot /target
su
4、nano /etc/mkini ......