链表


链表是OS中经常使用到的,任务调度和内存管理等关键模块都需要以链表为基础来实现。

节点定义

typedef struct _list_head {
  struct _list_head *next, *prev;
} list_head_t;

使用

//先定义一个数据结构体
typedef struct{
    list_head_t self;
    raw_t raw;
} data_t;

//再创建一个表头
list_head_t list;

//创建数据节点并连接
......

//使用container_of(参照预处理进阶)用data_t的self成员的指针拿到data_t的指针
container_of(list->next, data_t, self);

完整实现链接[om_list.c om_list.h]