在linux中list.h文件的结构定义是什么

avatar
作者
筋斗云
阅读量:0

在Linux中,list.h文件定义了双向链表结构的相关数据结构和操作。其结构定义如下:

struct list_head {     struct list_head *prev, *next; };  #define LIST_HEAD_INIT(name) { &(name), &(name) }  #define LIST_HEAD(name) \     struct list_head name = LIST_HEAD_INIT(name)  static inline void INIT_LIST_HEAD(struct list_head *list) {     list->next = list;     list->prev = 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; }  static inline void list_add(struct list_head *new, struct list_head *head) {     __list_add(new, head, head->next); }  static inline void list_add_tail(struct list_head *new, struct list_head *head) {     __list_add(new, head->prev, head); }  static inline void __list_del(struct list_head *prev, struct list_head *next) {     next->prev = prev;     prev->next = next; }  static inline void list_del(struct list_head *entry) {     __list_del(entry->prev, entry->next);     entry->next = NULL;     entry->prev = NULL; }  #define container_of(ptr, type, member) ({        \     const typeof(((type *)0)->member) *__mptr = (ptr);    \     (type *)((char *)__mptr - offsetof(type, member)); })  #define list_entry(ptr, type, member) \     container_of(ptr, type, member) 

这里定义了一个双向链表节点struct list_head,包含了指向前一个节点和后一个节点的指针。另外,还定义了一些操作函数,比如初始化链表头、向链表中添加节点、从链表中删除节点等操作。此外,还定义了两个宏container_oflist_entry,用于获取包含链表节点的结构体。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!