2012-06-15 6 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 struct is 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 структура не установлена ​​и, таким образом, you''ll указывать на Null и модуль застрянет

0

Вы должны проверить, что dev-> wireless_handlers не равно нулю. Можете ли вы вставить фактический фрагмент кода? Какая ошибка вы получаете?

Смежные вопросы