我有一个基于 arm64 的 dragonboard410c,当它启动时,它会显示内存布局:
software IO TLB [mem 0xb6c00000-0xbac00000] (64MB) mapped at [ff]
Memory: 780212K/951296K available (9940K kernel code, 1294K rwda)
Virtual kernel memory layout:
vmalloc : 0xffffff8000000000 - 0xffffffbdbfff0000 ( 246 )
vmemmap : 0xffffffbdc0000000 - 0xffffffbfc0000000 ( 8 )
0xffffffbdc0000000 - 0xffffffbdc1000000 ( 16 )
fixed : 0xffffffbffa7fd000 - 0xffffffbffac00000 ( 4108 )
PCI I/O : 0xffffffbffae00000 - 0xffffffbffbe00000 ( 16 )
modules : 0xffffffbffc000000 - 0xffffffc000000000 ( 64 )
memory : 0xffffffc000000000 - 0xffffffc040000000 ( 1024 )
.init : 0xffffffc000e49000 - 0xffffffc000f43000 ( 1000 )
.text : 0xffffffc000080000 - 0xffffffc000e483e4 ( 14113 )
我找不到它的含义的解释。特别是 vmemmap 区域是什么?为什么它有两个地址间隔?另外,什么是“固定”和“记忆”区域?
我发现每当我使用带什么标志的 kmalloc nometer 时,我都会得到一个来自内存区域的地址。即使我使用 vmalloc ,我收到的地址也不是来自 vmalloc 区域。那么是否可以在内核模块中使用内存区域以外的区域?