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’
我该如何解决?
答案 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返回指向给定类型函数的指针,但我认为不是这种情况:)
)