免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1979 | 回复: 2
打印 上一主题 下一主题

内核中sk_buff结构的字段疑问? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-10-19 10:56 |只看该作者 |倒序浏览
我用的是2.6.34这套内核代码
其中在看sk_buff这个结构体的时候,
struct sk_buff{
......
kmemcheck_bitfield_begin(flags1);
        __u8                        local_df:1,
                                cloned:1,
                                ip_summed:2,
                                nohdr:1,
                                nfctinfo:3;
        __u8                        pkt_type:3,/*这个字段会根据帧的L2目的地址进行类型划分*/
                                fclone:2,
                                ipvs_property:1,
                                peeked:1,
                                nf_trace:1;
        kmemcheck_bitfield_end(flags1);

.....
}
这里有一些疑问:
1.kmemcheck_bitfield_begin(flags1);和kmemcheck_bitfield_end(flags1);是什么意思呢?
查看它的定义有两个解释:
1)#define kmemcheck_bitfield_begin(name)        \
        int name##_begin[0];
2)#define kmemcheck_bitfield_begin(name)
这个把人都看晕了 请高手来指点一下小弟啊!!
2.__u8                        pkt_type:3 这个字段定义不太明白
pkt_type后面的冒号和3是怎么理解的??

PS:这个和我们通常使用的C的标准貌似不太一样啊  请大家指点下小弟哈!!谢谢了

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2010-10-19 11:14 |只看该作者
查看它的定义有两个解释:
1)#define kmemcheck_bitfield_begin(name)        \
        int name##_begin[0];
2)#define kmemcheck_bitfield_begin(name)
这个把人都看晕了 请高手来指点一下小弟啊!


如果有多处定义的话,那么这几处定义肯定是有条件的,看一下你当前的系统满足那个条件

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2010-10-19 11:15 |只看该作者
2.__u8                        pkt_type:3 这个字段定义不太明白
pkt_type后面的冒号和3是怎么理解的??

PS:这个和我们通常使用的C的标准貌似不太一样啊  请大家指点下小弟哈!!谢谢了

这个用法在 C 中叫做 bit field,中文常译作位域,google 一下吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP