list.h

xiaoxiao2021-02-28  54

1 list_for_each_entry(pos, head, member)

函数功能:遍历链表,查找指定类型

参数定义:pos-循环游标;head-链表头节点;member-头节点在结构体中的名称

返回结果:

/** * list_for_each_entry - iterate over list of given type * @pos: the type * to use as a loop cursor. * @head: the head for your list. * @member: the name of the list_head within the struct. */ #define list_for_each_entry(pos, head, member) \ for (pos = list_first_entry(head, typeof(*pos), member); \ &pos->member != (head); \ pos = list_next_entry(pos, member))

2 list_for_each_entry_safe

函数功能:

参数定义:

返回结果:

3 list_first_entry(ptr, type, member)

函数功能:

参数定义:ptr-结构体头指针;type-结构体类型;name-在结构体中的名称

返回结果:

/** * list_entry - get the struct for this entry * @ptr: the &struct list_head pointer. * @type: the type of the struct this is embedded in. * @member: the name of the list_head within the struct. */ #define list_entry(ptr, type, member) container_of(ptr, type, member) /** * container_of - cast a member of a structure out to the containing structure * @ptr: the pointer to the member. * @type: the type of the container struct this is embedded in. * @member: the name of the member within the struct. * */ #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );})

4 list_add_tail

函数功能:在链表中加入一个新条目

参数定义:new-待添加条目;head-接受新条目的链表头节点

static inline void list_add_tail(struct list_head *new, struct list_head *head) { __list_add(new, head->prev, head); } /* * Insert a new entry between two known consecutive entries. * * This is only for internal list manipulation where we know * the prev/next entries already! */ #ifndef CONFIG_DEBUG_LIST static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next) { next->prev = new; new->next = next; new->prev = prev; prev->next = new; } #else extern void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next); #endif

转载请注明原文地址: https://www.6miu.com/read-81371.html

最新回复(0)