呼叫netif_napi_add时"makes pointer from integer without a cast"



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’

我该如何修复它?

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

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

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

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

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

相关内容

最新更新