在Linux中每个设备的获取存储器映射(Getting memory map of every de

2019-07-29 04:25发布

如何获取所有被Linux的识别出的物理设备的存储器映射。 我已经抬头看的/ proc / IOMEM和的/ proc / ioports。 但是,我没能找到每个设备存储器映射。 就如何实现这一目标的任何想法?

Answer 1:

据我所知的唯一通用的方式是/proc/iomem 。 这表明你的观点是什么存储器范围被分配给谁的内核。

如果您想了解更多的细节,你需要看每个单独的驱动程序。

你可能会得到一些更多信息/proc/vmallocinfo因为ioremap()使用vmalloc (尽管可能不是在所有的架构)。



Answer 2:

当你的机器的外设寄存器位于? 以前的答案已经给了你宝贵的意见,我相信。 组合/proc/iomem/proc/vmallocinfo为您提供了大量的信息。 请注意, vmalloc ,你需要深入到内核源代码的函数名与设备的驱动程序相关联。

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

在我看来,你试图直接访问设备的物理内存,你应该依靠的ioctl,sysfs的,或现有的由司机“谈”与设备提供的服务。

不要忘记这一点:如果Linux不告诉你,你想要的信息,这可能是因为你是不是在找正确的信息,或者您正试图绕过现有的服务。 从视图,即应用程序的用户空间中的点,你永远不应该关心的物理内存位置。



Answer 3:

当我还记得我的内核编码次数的权利,IOMEM输出/端口只是列出什么驱动寄存器那里。 因此,它更是一个每个驱动程序,而不是每个设备输出。

由于大部分的设备是当今PCI设备上lspci -v是也许你可以得到最好的,这说明使用的内存和IO端口。



Answer 4:

这个问题是这样老了,但在尝试安装Linux(还是新手)我这个问题挣扎了几天。

次要编号:从我收集的,每个设备仅由它是否是一个块或字符设备,也可以由一个主要标识。

在/ SYS的/ dev,文件夹,也有位于它们相应的文件夹中的每个块/字符设备的符号链接。 这些是链接到/ SYS文件夹内的物理设备信息。

有在/ dev文件夹内的并联块/焦炭的文件夹,其中的每一个具有相应的符号链接。 这些符号链接是在/ dev文件夹中的实际设备文件。

所以,如果你能得到大:设备的未成年人,可以在/ dev下的设备映射到/ SYS设备。 对于驱动器,你可以得到主要:次要与lsblk。



文章来源: Getting memory map of every device in linux