如何使用 linux 内核列表实现队列?

How to implement queues using linux kernel list?

我需要使用 Linux 内核列表在 C 中编写一些函数来操作队列。要做的第一个任务是将 p 指向的节点插入到知道 list_head 是 q 的队列中。所以我们定义函数如下:

void insertProcQ(struct list_head *q, struct proc *p)

proc 也由 linux 内核列表定义。 这是 list.h 的一部分,我需要用作队列实现:

struct list_head {
    struct list_head *next, *prev;
};    
static inline void INIT_LIST_HEAD(struct list_head *list)
    {
        list->next = list;
        list->prev = list;
    }

我知道如何将节点插入到队列中,但我不太清楚如何使用内核列表来执行此操作。因此,我们将不胜感激任何提示或相同示例。

参见下面 link 中的 list_add 示例 https://isis.poly.edu/kulesh/stuff/src/klist/

假设 p 有 struct list_head list 个成员。 这就是您的代码的样子

 void insertProcQ(struct list_head *q, struct proc *p)
 {
        list_add(&(p->list), q);
 }