c语言 - 将驱动程序函数分配给函数指针时出现"只读"错误netdev_ops



我正在运行Ubuntu 16.04.1中的QEMU VM中的网络驱动程序。uname -r将4.4.0-31代作为内核版本。

在linux/netdevice.h中,该内核版本我找到了评论

"@@netdev_ops:包括几个指向回调的指针, 如果要覆盖NDO _*()函数"

但是,在我的代码中,诸如 dev->netdev_ops->ndo_open = netmod_open(netmod_open是我自己的驱动程序中的打开方法)之类的作业给出了编译器错误:

assignment of member 'ndo_open' in read-only object

此外,netdev_ops在来源中被声明为const

const struct net_device_ops *netdev_ops;

如果包含指针的结构是const

我如何"覆盖ndo _*()函数"

定义您自己的struct net_device_ops类型变量,设置其字段(实际上是挂钩),您要覆盖,并将此变量分配给dev->netdev_ops

请注意,根据struct net_device_ops的描述,需要设置唯一的字段.ndo_start_xmit,您可能会留下非判决的其他字段(即null)。

最新更新