zoukankan      html  css  js  c++  java
  • skbuff.h文件中NET_SKBUFF_DATA_USES_OFFSET宏的含义

    http://blog.csdn.net/macrossdzh/article/details/5359419


    找到NET_SKBUFF_DATA_USES_OFFSET定义的地方,文件include/linux/skbuff.h
    #if BITS_PER_LONG > 32
    #define NET_SKBUFF_DATA_USES_OFFSET 1
    #endif

    出现使用NET_SKBUFF_DATA_USES_OFFSET 的地方,如:
    #ifdef NET_SKBUFF_DATA_USES_OFFSET
    //如果使用了offset来表示偏移的话,就是说是一个相对偏移的情况:
    static inline unsigned char *skb_transport_header(const struct sk_buff *skb)
    {
        return skb->head + skb->transport_header;
    }
    ......
    #else /* NET_SKBUFF_DATA_USES_OFFSET */
    //不使用相对偏移的情况
    static inline unsigned char *skb_transport_header(const struct sk_buff *skb)
    {
        return skb->transport_header;
    }
    ......
    #endif /* NET_SKBUFF_DATA_USES_OFFSET */

    以上是*skb_network_header函数的实现,可以看到,返回网络层协议头的实现对于32位系统和64位系统,

    skb_network_header函数有不同的实现,所以在编程中,直接调用*skb_network_header函数是好的。

    可以说,这些函数,为我们编写内核程序提供了极大的便捷,而不用再花更多的精力去考虑计算各层的指针偏移,

    可以把更多的精力用来考虑策略性的设计。


  • 相关阅读:
    SQL 学习之路 (一)
    简单、易懂、通用的微信号、二维码轮播js
    本地phpstudy 新建站点运行步骤
    react-native 项目环境搭建
    JavaScript与DOM(下)
    JavaScript与DOM(上)
    ThisYes,this!
    编写高质量的JavaScript代码的基本要点
    变量对象(Variable Object)
    JavaScript核心
  • 原文地址:https://www.cnblogs.com/mull/p/4477850.html
Copyright © 2011-2022 走看看