c - 这个宏做了什么操作?

标签 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 中定义。

最佳答案

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

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

关于c - 这个宏做了什么操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22472407/

相关文章:

linux - x86 平台中的 KVM 影子页表处理

C 中的 CGI : Page Redirect

c - 如何用C语言创建矩阵结构?

c++ - 如何在不使用数组或任何算术运算的情况下反转数字

regex - 将文件名的第一部分移至文件扩展名之前的末尾

c - DECLARE_PER_CPU 变量存储在内核中的什么位置

c - 为什么使用数组索引遍历数组比指针访问慢?

Linux:如何在 `less` 模式下完成/中断 "&<pattern>"命令

linux - 由于用户名无效,Azure VM 创建失败

linux蓝牙低能耗源代码