Linux kernel 如何在此联合中访问此比特率值?

Linux kernel 如何在此联合中访问此比特率值?,linux-kernel,Linux Kernel,我正在编写一个内核模块,需要从这个联合体读取比特率的值: union iwreq_data { ....... struct iw_param bitrate; /* default bit rate */ .... } 这段代码是从wireless.h获取的。有人知道我如何访问它的值吗?我的意思是我应该使用什么结构的net\u设备?wireless\u dev?我使用的是linux内核2.6.35如果您有union iwreq_data*data,您只需

我正在编写一个内核模块,需要从这个联合体读取比特率的值:

union   iwreq_data
{
    .......
    struct iw_param bitrate;    /* default bit rate */

     ....
}

这段代码是从wireless.h获取的。有人知道我如何访问它的值吗?我的意思是我应该使用什么结构的net\u设备?wireless\u dev?我使用的是linux内核2.6.35

如果您有
union iwreq_data*data
,您只需使用
data->bitrate.value

但是这个结构并不是永久存在的,所以对于给定的设备,您无法获取指向它的指针。该结构在设置或获取设备参数时使用,仅在设置/获取操作期间存在。
当设置比特率时,驱动程序以依赖于驱动程序的方式保存新值,然后释放结构(通常在设置函数的堆栈上分配)


您可以尝试调用
IEEE801SOFTMAC\u wx\u get\u rate
获取它。给它一个指向未初始化的
union iwreq_data
的指针,它将填充比特率。

问题是如何找到它。我的意思是使用什么函数/数据结构(如wireless_dev或其他什么?)谢谢Ugoren,但是这个
IEEE801SOFTMAC_wx_get_rate
函数在内核2.6.32中不存在,我在2.6.18中看到了它。也许2.6.32有一些替代品。您可以在2.6.18中搜索其呼叫者,并查看他们在2.6.32中的操作。