list_entry返回值

时间:2011-04-23 21:49:02

标签: linux list linux-kernel kernel return-value

干草伙!

我正在改变Rat Hat OS的内核代码,我想使用宏“列表条目”。 在失败的情况下,我无法找到任何值的返回值。

如果列表为空,它会返回什么?或在任何其他情况......

谢谢! 阿美

2 个答案:

答案 0 :(得分:1)

如果列表为空,则应该是未定义的。 (您试图取消引用不在列表元素类型结构中的列表指针)

通常,如果必须直接使用list_entry,则需要先检查list_empty。这将验证您的列表头没有指向自己。

否则坚持总是使用list_for_each宏,这将为你的元素生成for循环。

答案 1 :(得分:0)

我们可以用两种方式使用这个list_head

1)独立的单个全局变量,将列表保持为所有

的头部

虽然有列表成员,但我们无法在此变量事件上使用 list_entry 在里面。因为这不是任何结构的一部分。

2)我们可以使用list_head作为你的结构的成员,将你添加到列表中    将此成员指针指向列表HEAD。

我们将在此成员上使用 list_entry 来获取您的结构,即使您的结构也是如此    list member不是任何List的一部分(用next = NULL和priv = NULL初始化)    你可以得到结构,没有办法失败。

list_entry是简单的container_of()我们使用它来使用成员指针获取结构指针。