怎么获得linux的内存,如何以编程方式获得linux中的物理内存地址范围

我正在尝试获取Linux内核模块内系统中所有可用RAM的物理地址范围。如何以编程方式获得linux中的物理内存地址范围

我看到了cat/proc/iomem,并看到物理内存本身并不连续。

据我所知,对于32位系统的兼容性,PCI和其他外设存储器需要在4GB地址范围内。 也是用于DOS的640 kB初始值。 下面的输出是从x86_64系统

00000000-00000fff : reserved

00001000-0009d7ff : System RAM //640kB here

0009d800-0009ffff : reserved

000a0000-000bffff : PCI Bus 0000:00

000c0000-000cedff : Video ROM

000e0000-000fffff : reserved

000f0000-000fffff : System ROM

00100000-daa85fff : System RAM //~3.5 gb here

01000000-0177acb8 : Kernel code

0177acb9-01d1b53f : Kernel data

01e79000-01fbdfff : Kernel bss

daa86000-daa87fff : reserved

daa88000-dad0efff : System RAM //some RAM here

dad0f000-dae75fff : reserved

dae76000-dae95fff : ACPI Non-volatile Storage

dae96000-daf1efff : reserved

daf1f000-daf9efff : ACPI Non-volatile Storage

daf9f000-daffefff : ACPI Tables

dafff000-daffffff : System RAM //some RAM here

db000000-df9fffff : reserved

dba00000-df9fffff : Graphics Stolen Memory

dfa00000-feafffff : PCI Bus 0000:00

e0000000-efffffff : 0000:00:02.0

f0000000-f03fffff : 0000:00:02.0

f0400000-f04fffff : PCI Bus 0000:02

f0400000-f0403fff : 0000:02:00.0

f0400000-f0403fff : r8169

f0404000-f0404fff : 0000:02:00.0

f0404000-f0404fff : r8169

f0500000-f05fffff : PCI Bus 0000:01

f0500000-f0503fff : 0000:01:00.0

f0500000-f0503fff : bcma-pci-bridge

f0600000-f0603fff : 0000:00:1b.0

f0600000-f0603fff : ICH HD audio

f0604000-f06040ff : 0000:00:1f.3

f0605000-f060500f : 0000:00:16.0

f0605000-f060500f : mei_me

f0608000-f06087ff : 0000:00:1f.2

f0608000-f06087ff : ahci

f0609000-f06093ff : 0000:00:1d.0

f0609000-f06093ff : ehci_hcd

f060a000-f060a3ff : 0000:00:1a.0

f060a000-f060a3ff : ehci_hcd

f8000000-fbffffff : PCI MMCONFIG 0000 [bus 00-3f]

f8000000-fbffffff : reserved

f8000000-fbffffff : pnp 00:05

fec00000-fec00fff : reserved

fec00000-fec003ff : IOAPIC 0

fed00000-fed003ff : HPET 0

fed00000-fed003ff : PNP0103:00

fed08000-fed08fff : reserved

fed10000-fed19fff : reserved

fed10000-fed17fff : pnp 00:05

fed18000-fed18fff : pnp 00:05

fed19000-fed19fff : pnp 00:05

fed1c000-fed1ffff : reserved

fed1c000-fed1ffff : pnp 00:05

fed1f410-fed1f414 : iTCO_wdt

fed20000-fed3ffff : pnp 00:05

fed40000-fed44fff : PCI Bus 0000:00

fed45000-fed8ffff : pnp 00:05

fed90000-fed93fff : pnp 00:05

fee00000-fee00fff : Local APIC

fee00000-fee00fff : reserved

ff000000-ffffffff : INT0800:00

ffd80000-ffffffff : reserved

100000000-15fdfffff : System RAM //~1.5 gB here

15fe00000-15fffffff : RAM buffer

我的问题是。 1.如何获取所有可用于DMA的RAM,使用内核代码。 2.为什么会有额外的RAM区域。 ?还有为什么RAM没有在某个合适的边界处分割,例如。 2GB + 3GB。 3.将只有3.5GB的区域用于DMA或更高的DMA可以使用1.5 GB的区域。在Linux中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值