获取linux中每个设备的内存映射

获取linux中每个设备的内存映射,linux,memory,linux-kernel,device,Linux,Memory,Linux Kernel,Device,如何获取Linux识别的所有物理设备的内存映射。我已经查阅了/proc/iomem和/proc/ioport。但是,我无法找到每个设备的内存映射。知道如何实现这一点吗?当我正确地记得我的内核编码时间时,iomem/ports的输出只列出驱动程序在那里注册的内容。因此,它更多的是每个驱动程序,而不是每个设备的输出 由于目前大多数设备都是pci设备,因此,lspci-v可能是您能得到的最好的设备,它可以显示已使用的内存和io端口。据我所知,唯一通用的方法是/proc/iomem。这将向您显示分配给谁

如何获取Linux识别的所有物理设备的内存映射。我已经查阅了/proc/iomem和/proc/ioport。但是,我无法找到每个设备的内存映射。知道如何实现这一点吗?

当我正确地记得我的内核编码时间时,iomem/ports的输出只列出驱动程序在那里注册的内容。因此,它更多的是每个驱动程序,而不是每个设备的输出


由于目前大多数设备都是pci设备,因此,lspci-v可能是您能得到的最好的设备,它可以显示已使用的内存和io端口。

据我所知,唯一通用的方法是
/proc/iomem
。这将向您显示分配给谁的内存范围的视图核心

如果你想了解更多细节,你需要了解每个司机


您可能会从
/proc/vmallocinfo
获得更多信息,因为
ioremap()
使用
vmalloc
(但可能不是在所有体系结构上)。

您的机器的外围设备寄存器位于何处?我相信之前的回答已经给了你们宝贵的信息。
/proc/iomem
/proc/vmallocinfo
的组合为您提供了大量信息。请注意,使用
vmalloc
,您需要深入研究内核源代码,以便将函数名与设备的驱动程序相关联

但真正的问题是你们到底想知道什么?你想要这些信息的目的是什么

在我看来,您正试图直接访问设备的物理内存,在这里,您应该依靠ioctl、sysfs或驱动程序提供的现有服务与设备“对话”


不要忘记这一点:如果Linux没有向您显示您想要的信息,可能是因为您没有寻找正确的信息,或者您试图绕过现有的服务。从用户空间的角度来看,ie应用程序,你永远不应该关心物理内存位置。

这个问题太老了,但我在尝试安装Linux(还是一个新手)的过程中已经为这个问题挣扎了几天

从我收集到的信息来看,每个设备都是通过一个块还是一个字符设备,以及一个主次号来唯一标识的

在/sys/dev文件夹中,每个块/字符设备都有各自文件夹中的符号链接。这些是指向/sys文件夹中的物理设备信息的链接

/dev文件夹中有并行的block/char文件夹,每个文件夹都有相应的符号链接。这些符号链接指向/dev文件夹中的实际设备文件


因此,如果可以获取设备的主设备:次设备,则可以将/dev中的设备映射到/sys中的设备。对于驱动器,您可以使用lsblk获取主:次。

yes。。我也看过lspci-vvv,但是没有列出所有的设备。。所以我也希望有别的事情