【问题标题】:How to find out sk_buff structure size?如何找出 sk_buff 结构的大小?
【发布时间】:2014-08-23 04:33:43
【问题描述】:

谁能帮我解决以下问题:

我计划向现有 Linux 内核添加新协议。我的疑问是如何在使用 skb_alloc() 调用分配内存之前找出 sk_buff 结构的大小

【问题讨论】:

    标签: linux linux-kernel kernel linux-device-driver


    【解决方案1】:

    没有 skb_alloc 这样的东西。我假设您实际上是要调用 alloc_skb 或 dev_alloc_skb。给 alloc_skb 的 size 参数是您要与其一起分配的 缓冲区 大小。你不需要计算 sk_buff 结构的大小,alloc_skb 已经知道了。换句话说,如果您计划接收最大以太网帧(1518 字节),您可能需要这样的内容:

    skb = alloc_skb(1536, GFP_KERNEL);
    

    这会分配一个 sk_buff 结构和一个 1536 字节的关联缓冲区。实际缓冲区在“skb->data”。

    【讨论】:

    【解决方案2】:
    sizeof(struct sk_buff)
    

    或者如果你使用指向 sk_buff 的指针

    sizeof(struct sk_buff)
    

    【讨论】:

    • 这些假设是一样的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 2011-11-15
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多