一般在驱动程序中,经常需要读硬件寄存器的值,然后在检查其中某些字段的值,通常的做法是设置一些位掩码,然后与一下就可以了,今天看驱动代码,发现还有如下的方法,觉得还不错。
union A {
struct {
u64 part1:2;
u64 part2:2;
u64 part3:60;
} part;
u64 full;
} ;
union A a;
a.full = read_XXX();
然后如果需要读其中的字段,只需要访问 a.part.part1, a.part.part2, a.part.part3 就行了