Linux register_pernet_subsys和register_pernet_device之间有什么区别?

Linux register_pernet_subsys和register_pernet_device之间有什么区别?,linux,linux-kernel,Linux,Linux Kernel,说 在创建时,在设备初始化之前调用所有子系统初始化函数 函数,并在销毁时调用所有设备退出函数 在subsys退出功能之前 也许这就是答案。然而,这篇文章发表已经8年了。它可能不再正确了 我阅读了linux/net/core/net_namespaces.c中的代码,但仍然没有完全理解它 有人能帮我吗?THX.好吧,学习几个月后,我会回答我自己的问题 关键在于理解list()。 如果您不熟悉linux内核广泛使用的这种数据结构,建议您先用它编写一些代码 ,pernet_list和first_dev

在创建时,在设备初始化之前调用所有子系统初始化函数 函数,并在销毁时调用所有设备退出函数 在subsys退出功能之前

也许这就是答案。然而,这篇文章发表已经8年了。它可能不再正确了

我阅读了linux/net/core/net_namespaces.c中的代码,但仍然没有完全理解它


有人能帮我吗?THX.

好吧,学习几个月后,我会回答我自己的问题

关键在于理解list()。 如果您不熟悉linux内核广泛使用的这种数据结构,建议您先用它编写一些代码

,pernet_list和first_device都是指向同一列表头的指针

如果调用register_pernet_subsys,pernet_list和first_device仍将是指向列表头的相同设备。准确地说,如果没有调用register\u pernet\u device,它们中的每一个都指向私有位置

但是,在调用register_pernet_device之后,第一个设备将指向新的列表头,而pernet_list仍然指向原始列表头