2012-06-15 14 views
1

我需要從iw_statistics結構中讀出一定的統計,這裏的代碼:試圖讀取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和我正在寫一個內核模塊。我在這裏做錯了什麼?

回答

3

看起來像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和你的模塊會卡住

0

您應該檢查dev-> wireless_handlers是否爲空。你能粘貼實際的代碼片段嗎?你得到的錯誤是什麼?

相關問題