我正在编写一个基于环回驱动程序的简单网络设备驱动程序,并希望注册我的net_device
结构。 This和 that关于编写网络设备的页面说只调用 register_netdev
。但是他们正在用 PCI Express 和其他复杂的东西编写花哨的驱动程序。
因此,如果我只想要环回驱动程序之类的东西,我大概应该将我的代码基于 loopback.c
。我的问题是,loopback_net_init
中这段代码的第一行是做什么的:
dev_net_set(dev, net);
err = register_netdev(dev);
显然 net
是由 net_namespace.c
中的这段代码决定的:
register_pernet_device(ops) ...
__register_pernet_operations(list, ops)
for_each_net(net) ...
这个循环是为了什么?如果我跳过 dev_net_set
调用,可能会出现什么问题?为什么其他人不使用它?
最佳答案
据我所知,net 是一个允许内核与设备交互的结构。您需要它来注册设备并在模块清理功能中将其删除。请查看 linux/net/8021q/下的代码以获取示例。
关于c - dev_net_set 在 Linux 中有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56875655/