list_entry返回值
嘿伙计们!
我正在更改 Rat Hat 操作系统的内核代码,并且我想使用宏“列表条目”。 我在任何地方都找不到失败时的返回值是什么。
如果列表为空,它会返回什么?或者在任何其他情况下...
谢谢! 阿美
Hay guys!
I'm changing the kernel code at the Rat Hat OS and I want to use the macro "list entry".
I can't find anywhere what is the return value in case of failure..
What will it return if the list is empty? or at any other case...
Thanks!!
Ami
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果列表为空,它应该是未定义的。 (您试图取消引用不在列表元素类型的结构中的列表指针)
通常,如果必须直接使用 list_entry,则需要首先检查 list_empty 。这将验证您的列表头没有指向自身。
否则,坚持始终使用 list_for_each 宏,它将在元素上生成 for 循环。
It should be something undefined if the list is empty. (You're trying to dereference a list pointer that's not in a struct of the list's element type)
Generally, if you must use list_entry directly, you want to check if list_empty first. This will verify your list head doesn't point to itself.
Otherwise stick to always using the list_for_each macros which will generate a for loop over your elements.
我们可以通过两种方式使用这个list_head:
1)独立的单个全局变量,将列表作为所有的头,
尽管有列表成员,但我们不能在此变量事件上使用list_entry
在其中。因为这不是任何结构的一部分。
2)我们可以使用list_head作为您的结构的成员,同时添加到您将要添加的列表中
将此成员指针赋予列表 HEAD。
我们将在此成员上使用 list_entry 来获取您的结构,即使您的
列表成员不属于任何列表(它用 next=NULL 和 priv=NULL 初始化)
你可以获得结构,没有办法失败。
list_entry 是简单的container_of(),我们用它来通过成员指针获取结构指针。
We can use this list_head in two ways
1) independent single global variable, to HOLD the list as head to all
we can not use the list_entry on this variable event though there are list members
in it. because this is not part of any structure.
2) we can use list_head as member of the your structure, wile adding to the list you will
give this member pointer to the list HEAD.
we will use list_entry on this member to get the your structure even though your
list member is not part of any List(it initialized with next=NULL and priv=NULL)
you can get structure there is no way to fail.
list_entry is simple container_of() we use this to get the structure pointer using member pointer.