Понимание структуры физической и виртуальной памяти в моем ядре

У меня есть dragonboard410c, который основан на arm64 и при загрузке показывает расположение памяти:

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 no meter с каким флагом, я получаю адрес из области памяти. Даже если я использую vmalloc, адрес, который я получаю, не из региона vmalloc. Так можно ли использовать области, отличные от области памяти, в модуле ядра?

0 ответов

Другие вопросы по тегам