list

linux kernel有链表、队列、映射、二叉树等内建数据结构,并且封装一系列API给linux kernel开发人员使用,本章讲解链表。

base linux-2.6.34

简介

链表有单向链表、双向链表、环形链表,linux kernel 标准链表就是采用环形双向链表形式实现

链表节点 定义如下:

struct list_head {
	struct list_head *next, *prev;
};

如何使用 linux kernel 链表?一般将链表节点内嵌在对象结构内,如下:

struct test {
    int index;
    struct list_head list;
};

如何定义链表头 head ?如下:

LIST_HEAD(head);

如何将链表节点添加链表头?

void list_add(struct list_head *new, struct list_head *head)

如何从链表头删除链表节点?

如何得到链表节点内嵌对象结构的内容?

实践

Last updated

Was this helpful?