Linux 试图读取iw_统计数据,但代码无法工作?

Linux 试图读取iw_统计数据,但代码无法工作?,linux,wireless,linux-kernel,c,Linux,Wireless,Linux Kernel,C,我需要从iw_统计结构中读取某些统计信息,以下是代码: struct net_device *dev; struct iw_statistics *wi_stats; dev = first_net_device(&init_net); while (dev) { if (strncmp(dev->name , "wlan",4)==0 ) { if (dev->wireless_handlers->get_wir

我需要从iw_统计结构中读取某些统计信息,以下是代码:

struct net_device *dev;
struct iw_statistics *wi_stats;
dev = first_net_device(&init_net);

  while (dev)
    {
      if (strncmp(dev->name , "wlan",4)==0 )
      {
         if (dev->wireless_handlers->get_wireless_stats(dev) !=NULL ) // <--- here's where the code crashes.
         {
        wi_stats = dev-wireless_handlers->get_wireless_stats(dev);
        printk(KERN_INFO "wi_stats = dev-wireless_handlers->get_wireless_stats(dev); worked!!! :D\n"); 
         }
       }

    }
struct net\u设备*dev;
结构iw_统计*wi_统计;
dev=第一个网络设备(&init网络);
while(dev)
{
如果(strncmp(dev->name,“wlan”,4)==0)
{

if(dev->wireless\u handlers->get\u wireless\u stats(dev)!=NULL)//您应该检查dev->wireless\u handlers是否不为null。您可以粘贴实际的代码片段吗?出现了什么错误?

看起来像
wireless\u handlers
struct是
null
…仅仅因为网络设备填充了
name
字段并不意味着它已配置

这是设置
wireless\u handlers
的地方:

#ifdef CONFIG_WIRELESS_EXT
    /* List of functions to handle Wireless Extensions (instead of ioctl).
     * See <net/iw_handler.h> for details. Jean II */
    const struct iw_handler_def *   wireless_handlers;
    /* Instance data managed by the core of Wireless Extensions. */
    struct iw_public_data * wireless_data;
#endif
#ifdef配置(无线)扩展
/*处理无线扩展(而不是ioctl)的函数列表。
*详情见*/
const struct iw_handler_def*无线处理程序;
/*由无线扩展核心管理的实例数据*/
结构iw_公共_数据*无线_数据;
#恩迪夫
您应该检查名为
CONFIG\u WIRELESS\u EXT
的值。如果未设置该值,则未设置
WIRELESS\u handler
结构,因此您将指向一个
Null
,您的模块将被卡住