这个宏做了什么操作?

时间:2014-03-18 07:01:57

标签: c linux linux-kernel linux-device-driver embedded-linux

#define MS(_v, _f) (((_v) & _f##_MASK) >> _f##_LSB)

此宏在drivers/net/wireless/ath/ath10k/core.h

中定义

1 个答案:

答案 0 :(得分:4)

_v给出一个表达式,评估 v alue(寄存器)和_f命名 f 字段。宏扩展为一个表达式,该表达式使用FIELD_MASK命名的掩码对值进行按位(&),然后右移FIELD_LSB以对其进行右对齐。

换句话说,它解包了一个位域。