kernel list
来源:互联网 发布:轻纺城金融网络借贷 编辑:程序博客网 时间:2024/06/14 10:32
头文件:#include <linux/list.h>
struct list_head {
struct list_head *next, *prev;
};
struct my_list {
struct list_head list;
void *mydata;
};
list相当于一条线,把一组数据串起来,形成一个循环链表。内核提供一组API用于维护和访问这组数据。
比如插入结点、删除结点、访问结点等。内核定义好的list这个结构和一组API可以让我们方便、安全的
维护链表。
初始化:
需要定义一个头结点,作为访问、操作的入口
struct my_list my_data_head;
头结点的数据域一般不用,或者可以保存一些统计信息。
INIT_LIST_HEAD(&(my_data_head.list));
添加结点:
struct my_list *new_node;
set_node(&new_node); //假定的函数,分配内存给new_node并赋值
list_add(&(new_node->list), &(my_data_head.list));
删除结点:
struct list_head *pos, *n;
struct my_list *cur;
list_for_each_safe(pos, n, &(my_list.list))
{
cur = list_entry(pos, struct my_list, list);
if (condition)
{
list_del(pos);
kfree(cur);
}
}
遍历结点:
list_for_each_safe(pos, n, &(my_list.list))
{
cur = list_entry(pos, struct my_list, list);
}
除以上几个API外,操作struct list_head的API还有很多。基本上也就是添加、删除、遍历这些操作。只是
不同的API应用的环境,内部的实现有些不同。比如前插、后插,从前往后遍历、从后往前遍历等等。总之,
就是提供了一种定义好的方法使我们可以方便、安全的把一组数据组织成链表。
- kernel list
- linux kernel list struct
- linux-kernel mailing list
- Linux Kernel Mailing List
- Linux kernel list
- Linux Kernel List
- Linux kernel Hash list
- Linux kernel mail list
- double linked list of kernel
- Linux Kernel中list解读
- Linux Kernel Linked List Explained
- Linux Kernel中list解读
- Linux Kernel中list解读
- Linux Kernel中list解读
- Linux Kernel中list解读
- kernel source insight file list.
- kernel:list LIST_HEAD/LIST_HEAD_INIT/INIT_LIST_HEAD
- Linux Kernel中list解读
- 设计模式一点通之单态模式
- android EditText中inputType的属性列表
- 在VB中调用Windows API的注意事项
- 【转】关于计算机二进制补码
- 6.7.1 F# 中实现列表
- kernel list
- yaffs2 源码分析
- GIT和repo使用方法,下载android-2.6.29内核
- C#数组排序
- spring classpath
- 6.6.2 自动泛型化(automatic generalization)
- 两台dlink dir-600M 无线路由+WDS桥接成功方法
- SQL Server 连接加密 (1) -- SQL Server connection encyption
- DIV层 被FLASH 遮挡解决