在操作系统编程中, 往往是使用C语言, 但C使用起来极为痛苦, 不像C++有方便的STL模板库使用。
linux内核中,有一套非常神奇的通用链表结构,能够方便的使用,管理各种类型的数据,我们今天就来研究一下,内核中的C数据结构。
本文参考:【深入分析 Linux 内核链表】
首先,我们的目标是构建一个循环双链表结构,为何是双链表,还要循环,当然是从易用性考虑了,双链表能够方便的得知自己的上一个元素,在内核中管理数据更为方便。
其一般结构大概是这样:
实现机制
首先定义一个list_node结构,用来保存链表节点信息:
/**
* @brief 链表节点结构
*/
typedef struct _list_node
{
struct _list_node *next;
struct _list_n