请教:关于内核中一种 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 也没有看到相关的扩展
不知道这种语法定义是如何解析的?有没有相关的说明?
先谢谢~ 难道不是数组么? 回复 2# nswcfd
是数组
但是看对应的协议中的字段只是对应某几个 bits,这样定义后赋值没法区分到底哪几个 bits 设置了 1 or 0
页:
[1]