调用netif_napi_add时“从没有强制转换的整数中生成指针”

时间:2012-02-16 07:10:06

标签: linux c

netif_napi_add的语法是:

netif_napi_add(struct net_device *dev, struct napi_struct *napi,int (*poll)(struct napi_struct *, int), int weight)

用于初始化napi结构。问题是,当我使用函数时:

netif_napi_add(wdev,rnapi,rrpoll(rnapi,20),16);

它给了我一个汇编警告:

warning: passing argument 3 of ‘netif_napi_add’ makes pointer from integer without a cast
/usr/src/linux-2.6.34.10-0.6/include/linux/netdevice.h:1089:6: note: expected ‘int (*)(struct napi_struct *, int)’ but argument is of type ‘int’

我该如何解决?

2 个答案:

答案 0 :(得分:4)

netif_napi_add int (*poll)(struct napi_struct *, int)的第三个参数是名为poll的{​​{3}},它指向一个struct napi_struct *和{{1}的函数并返回int。您直接调用int并将其返回值(rrpoll)传递给int,而不是函数指针。您可能希望直接将netif_napi_add传递给函数:

rrpoll

答案 1 :(得分:2)

第三个参数应该是指向函数的指针,而不是返回值,你应该像这样调用它:

netif_napi_add(wdev,rnapi,&rrpoll,16);

(除非rrpoll返回指向给定类型函数的指针,但我认为不是这种情况:)