如何使用 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);
}
我需要使用 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);
}