gpt4 book ai didi

c - sk_buff 如何指向 sk_buff_head

转载 作者:太空宇宙 更新时间:2023-11-04 02:03:04 24 4
gpt4 key购买 nike

sk_buff linux 内核中的数据结构被组织成一个双向链表,但是这个链表的最后一个成员和第一个成员指向一个sk_buff_head 结构。但是,nextprev 成员被声明为指向 sk_buff 而不是 sk_buff_head 的指针。这怎么可能?

struct sk_buff {
struct sk_buff * next;
struct sk_buff * prev;
struct sk_buff_head * list;
struct sock * sk;
struct timeval stamp;
struct net_device * dev;
struct net_device * real_dev;
union private;
#endif#ifdef CONFIG_NET_SCHED__u32 tc_index;
#endif
unsigned int truesize;
atomic_t users;
};



struct sk_buff_head {
/* These two members must be first. */
struct sk_buff * next;
struct sk_buff * prev;
__ U32 qlen;
spinlock_t lock;
};

最佳答案

双向链表中的每个 sk_buff 结构必须能够快速找到整个链表的头部。这就是 sk_buff_head 结构的目的,它被插入到列表的开头。所以,sk_buff_head 是一个特殊的 sk_buff。指向里面的另一个 sk_buff_head 没有任何意义。我认为你会指向整个不同的双向链表的头部,如果下一个和上一个成员在 sk_buff_head...
请参阅下图以了解此概念。

sk_buff_head image

关于c - sk_buff 如何指向 sk_buff_head,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com