gpt4 book ai didi

编译错误: 'struct net_device’ has no member named ‘open’

转载 作者:行者123 更新时间:2023-11-30 18:50:48 26 4
gpt4 key购买 nike

我正在关注LDD3来学习网络设备驱动程序。我刚刚编译了 snull 驱动程序的源代码,得到了这个编译错误:

error: ‘struct net_device’ has no member named ‘open’

当我尝试初始化 struct net_device 的其他成员时,我也遇到了类似的错误。请帮助解决此错误。

下面是代码:

struct net_device *snull_devs[2];
snull_devs[0] = alloc_netdev(sizeof(struct snull_priv), "sn%d",
snull_init);

void snull_init(struct net_device *dev)
{
ether_setup(dev); /* assign some of the fields */

dev->open = snull_open;
dev->stop = snull_release;

最佳答案

那本书已经很老了,而且在最近的内核中这显然已经改变了。 struct net_device 现在具有以下成员:

    const struct net_device_ops *netdev_ops;

其成员如下:

    int                     (*ndo_open)(struct net_device *dev);
int (*ndo_stop)(struct net_device *dev);

所以等效的代码是:

dev->netdev_ops->ndo_open = snull_open;
dev->netdev_ops->ndo_stop = snull_release;

但是设备驱动程序环境可能存在其他更改,这些更改会影响其编码方式。我建议你阅读章节API changes in the 2.6 kernel series .

关于编译错误: 'struct net_device’ has no member named ‘open’ ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38950381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com