1

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 に取り組んでおり、カーネル モジュールを作成しています。ここで何が間違っていますか?

4

2 に答える 2

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構造体が設定されていないため、 a を指しているためNull、モジュールが動かなくなります。

于 2012-06-16T09:20:38.117 に答える
0

dev->wireless_handlers が null でないことを確認する必要があります。実際のコード スニペットを貼り付けてもらえますか? あなたが得るエラーは何ですか?

于 2012-06-15T15:09:51.517 に答える