我正在使用内置链接列表中的LINUX编写一些内核代码。我想知道是否多次调用INIT_LIST_HEAD将重新初始化我创建的所有变量。 INIT_LIST_HEAD宏的行为是什么?
以下是一些示例代码:
INIT_LIST_HEAD(same_list);
for(i = 0; i < 10; i++)
INIT_LIST_HEAD(same_list);
add_to_tail_of_same_list
两个列表是否指向同一个列表,即最终迭代中的same_list是否有10个元素?我问这个问题,因为我想在for循环中使用INIT_LIST_HEAD而不是在循环之外初始化。
答案 0 :(得分:2)
INIT_LIST_HEAD
does the following:
static inline void INIT_LIST_HEAD(struct list_head *list)
{
list->next = list;
list->prev = list;
}
因此,如果你从循环中调用它,你将有效地重新初始化它10次,你添加的前9个元素将会丢失。