openspace 发表于 2016-06-23 15:26

请教:关于内核中一种 bit field 的定义方式

最近接触到一种看似很奇怪的 bit filed 定义:

208 struct mlx5_ifc_flow_table_fields_supported_bits {
209   u8         outer_dmac;
210   u8         outer_smac;
211   u8         outer_ether_type;
212   u8         reserved_at_3;
213   u8         outer_first_prio;
214   u8         outer_first_cfi;
215   u8         outer_first_vid;
216   u8         reserved_at_7;
217   u8         outer_second_prio;
218   u8         outer_second_cfi;
219   u8         outer_second_vid;
220   u8         reserved_at_b;
221   u8         outer_sip;
222   u8         outer_dip;
223   u8         outer_frag;
224   u8         outer_ip_protocol;
225   u8         outer_ip_ecn;
...


如果结合协议文档看,字段是对应协议中的定义的,但是如果按照 u8 顺序排列,有的对应不上,还不知道如何对应到实际的 bits
跟传统的bitfield 感觉差距好大

搜了一下也不知道用什么关键字,gcc 也没有看到相关的扩展
不知道这种语法定义是如何解析的?有没有相关的说明?

先谢谢~

nswcfd 发表于 2016-06-28 18:24

难道不是数组么?

openspace 发表于 2016-06-30 09:40

回复 2# nswcfd


    是数组

    但是看对应的协议中的字段只是对应某几个 bits,这样定义后赋值没法区分到底哪几个 bits 设置了 1 or 0
页: [1]
查看完整版本: 请教:关于内核中一种 bit field 的定义方式