易截截图软件、单文件、免安装、纯绿色、仅160KB

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的定制结构
next
prev
list_head结构
空链表
<linux/list. h>中的链表
下面这个代码行就是从examplelist链表中得到节点对应的example_struct结构指针,其中ptr是exampleli


相关文档:

当两台LINUX主机之间要互传文件时可使用SCP命令来实现

当两台LINUX主机之间要互传文件时可使用SCP命令来实现
 
复制文件:
(1)将本地文件拷贝到远程
scp 文件名 --用户名@计算机IP或者计算机名称:远程路径
(2)从远程将文件拷回本地
scp --用户名@计算机IP或者计算机名称:文件名 本地路径
复制目录:
(1)将本地目录拷贝到远程
scp -r 目录名 用户名@计 ......

linux系统下的ioctl函数 转

我这里说的ioctl函数是在驱动程式里的,因为我不知道更有没有别的场合用到了ioctl,
      所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混
      了,这几天才弄明白他,于是在这里清理一下头脑。
      
    ......

linux ulimit 问题

       最近在维护论坛,论坛的构建是linux  nginx+php5.3+mysql5.1。最近一段时间老是出现问题,刚开始由于php版本以及设置的问题还有以前老版本留下的问题,使得论坛老被挂马,找了一个星期的问题,各处都补漏了一下的!php也升级了一下!
       ......

linux下 jdk配置

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@ ......

在Linux下看电视

在Linux下看电视
时间:2009-12-09 13:37:00  来源:网络  作者:小卢
  长期以来,在Linux操作系统下使用电视卡是一件比较麻烦的事,这是因为各家电视卡生产厂商都没有提供官方的Linux驱动,只有Windows下的WDM驱动。
  Linux下的电视卡驱动,一直由linux.bytesex.org的Linux爱好者负责开发。该驱动有两 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号