理解Linux内核链表
1.什么是内核链表他和普通链表的区别是啥。普通链表是这样的节点 数据 前后指针struct Node{int data;struct Node* next *prev;}而内核链表是单独定义一个链表头结构体list_head只存前后指针不存任何数据struct list_head{struct list_head *next , *prev;}而只要我们的结构体里嵌入这个list_head,我们就可以挂上链表。2.为什么要这样设计1.这一套链表代码所有结构体通用不用再每一个结构体都要重写增删查改只写一套基于list_head的操作宏不管外层是什么结构体直接复用。2.一个对象可以嵌入多个list_head,为什么要嵌入多个list_head这样一个结构体可以并入多个链表一个进程就可以同时在全局进程链表进程组链表等待链表互不干扰。3.不用判空全程不存在NULL指针所有 next/prev 一定指向合法 list_head地址。3.拿到list_head指针后我们只要算出偏移值就能取到结构体首地址进而就能取到别的数据。