干草伙!
我正在改变Rat Hat OS的内核代码,我想使用宏“列表条目”。 在失败的情况下,我无法找到任何值的返回值。
如果列表为空,它会返回什么?或在任何其他情况......
谢谢! 阿美
答案 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()我们使用它来使用成员指针获取结构指针。