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
相关文档:
<!--
/* Font Definitions */
@font-face
{font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:SimSun;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 680460288 22 0 262145 0;}
@font-face
{font-family:"\@宋体" ......
linux的free命令中,cached和buffers的区别
Free
free 命令相对于top 提供了更简洁的查看系统内存使用情况:
$ free
total used free shared buffers cachedMem: 255268 238332 16936 0 85540 126384-/+ buffers/cache: 26408 228860Swap: 265000 0 265000
Mem:表示物理内存统计
-/+ buffers/ca ......
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 ......
在众多网络应用中,FTP(文件传输协议)有着非常重要的地位。Internet中一个十分重
要的资源就是软件资源,而各种各样的软件资源大多数都放在FTP服务器中。与大多数
Internet服务一样,FTP也是一个客户机/服务器系统。用户通过一个支持FTP协议的客户
机程序,连接到主机上的FTP服务器程序。用户通过客户机程序向服务器程 ......
LInux
下
如何安装ffmpeg
关键字: linux
ffmpeg
终于装上了,把过程记录一下
首先要安装各种解码器
1、lame
lame-3.97.tar.gz
Url:http://sourceforge.net/project/showfiles.php?group_id=290&package_id=309
安装方法如下:
Java代码 < type="application/x-shockw ......