linux - 试图阅读 iw_statistics 但代码不起作用?

标签 linux wireless linux-kernel c

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

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"); 
         }
       }

    }

我正在研究 linux 内核 2.6.35,并且正在编写一个内核模块。我在这里做错了什么?

最佳答案

看起来 wireless_handlers 结构是 Null ...仅仅因为网络设备的 name 字段已填充并不意味着它已配置。

这是设置 wireless_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

您应该检查名为 CONFIG_WIRELESS_EXT 的值,如果它未设置,wireless_handler 结构未设置,因此您将指向一个 Null 你的模块会卡住

关于linux - 试图阅读 iw_statistics 但代码不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11060318/

相关文章:

python - Xbee API 数据包无法从路由器到达协调器

session 室中 200 台 ipad 上的 SignalR 轮询应用程序。投票时带宽瓶颈?

linux - 使用 netlink inet_diag 进行实时套接字监控

c - 关于Linux fork的问题

c++ - 如何在 linux 中找到默认网络接口(interface)?

php - Active Directory LDAPS 通过自签名证书启用。但是 PHP 客户端无法通过 AD 服务器进行身份验证

linux - CustomScript 扩展 - 无法在 Azure CentOS VM 上运行 bash 脚本

linux - 如何在运行时获取内核模块的完整依赖列表

c# - 在 C# 中管理无线网络连接

linux - do_fork() 在哪里为新分配的 task_struct 定义了 "prio"字段?