C 如何遍历连接到系统的所有设备,并在内核模块中获取它们的结构设备

C 如何遍历连接到系统的所有设备,并在内核模块中获取它们的结构设备,c,linux-kernel,x86,kernel-module,device-driver,C,Linux Kernel,X86,Kernel Module,Device Driver,我想在我的自定义内核模块中编写一个函数,它可以执行“遍历连接到系统的所有设备并获取它们的struct device*”,以便使用driver\u unregister(struct device\u driver*drv)注销所有设备驱动程序使用设备驱动程序*结构设备的字段作为参数 我希望能找到像“列出所有设备的头”这样的全局变量(这样我就可以使用list\u来访问每个设备),我已经查看了struct device内部的节点的struct device\u node*,结果很遗憾,因为它只用于A

我想在我的自定义内核模块中编写一个函数,它可以执行“遍历连接到系统的所有设备并获取它们的
struct device*
”,以便使用
driver\u unregister(struct device\u driver*drv)注销所有设备驱动程序
使用
设备驱动程序*
结构设备的字段作为参数

我希望能找到像“列出所有设备的头”这样的全局变量(这样我就可以使用
list\u来访问每个设备),我已经查看了
struct device
内部的节点的
struct device\u node*,结果很遗憾,因为它只用于ARM体系结构,而不用于x86


总而言之,是否有任何数据结构或内核API函数允许内核模块程序员以简单的方式遍历所有设备的
struct device*

Linux内核中没有这样的东西。这很遗憾:(感谢您的评论,尽管您可以尝试检查内核中可用的每一条总线,但它可能无法覆盖内核中注册的100%设备。