通过了解Linux内核:
Linux内核定义了list_head数据结构,仅 next和prev字段表示a的前向指针和后向指针 通用双链表元素。重要的是要 但是请注意,list_head字段中的指针存储了 其他list_head字段的地址,而不是 包含list_head结构的整个数据结构; 参见图3-3(a)。
为什么list_head字段中的指针存储其他list_head字段的地址,而不是其中包括list_head结构的整个数据结构的地址?
给出一个指向df['Net Volume'].rolling(window=range_window).apply(
lambda x: np.max(x * np.blackman(range_window)), raw=True
)
对象的指针,如何获取包含list_head
对象的数据结构(例如“数据结构1”)的对象?
例如,How can I get the process descriptor from a PID in Linux kernel?
如果使用的是OO语言,则list_head字段是否在包含list_head结构的数据结构中是私有的?那么,与其他list_head字段的地址相比,list_head字段中的指针存储包含该list_head结构的整个数据结构的地址更合理吗?< / p>
谢谢。
答案 0 :(得分:1)
list_head
存储指向下一个/上一个列表节点的指针。
可以将一个数据结构放在一个以上的列表中,并在其中使用多个list_head
元素。
处理代码“知道”这些元素中的哪些元素放入给定列表中,并可以使用list_entry
从指向节点的指针恢复指向数据结构的指针。
答案 1 :(得分:1)
为什么list_head字段中的指针存储其他地址 list_head字段而不是整个数据的地址 包含list_head结构的结构?
因为从逻辑上讲它是正确的,并且易于实现。您不需要知道用于迭代列表的类型。同样,列表头未嵌入任何结构中。列表为空时应该指向什么?
给出一个指向list_head对象的指针,我该如何获取 数据结构(例如“数据结构1”)包含 list_head对象?
使用container_of宏。