LinuxÒÁµéÔ°ÂÛ̳'s Archiver

cnmyth ·¢±íÓÚ 2007-10-2 14:12

ΪʲôÆô¶¯ºóµ½BIOS-provided physical RAM map¾ÍͣסÁË£¿

ΪʲôÆô¶¯ºóµ½BIOS-provided physical RAM map¾ÍͣסÁË£¿
ÆÁÄ»ÏÔʾ
BIOS-provided physical RAM map£º
BIOS-e820: 0000000000000000 ¨C 000000000009F800 (usable)
BIOS-e820: 00000000000009f800£­00000000000a0000 (reserved)
.
.
.
BIOS-e820: 000000000fffe0000£­0000001000000000 (reserved)

È»ºó¾Í¿¨×¡ÁË,´òÓ¡³öÀ´ÏÔʾÔÚcopy_edd()ǰ¾ÍͣסÁË

ARCH_SETUP /* x86ϵÁÐûÓÐÈκε͝×÷ */
if (efi_enabled)
efi_init();
else {
printk(KERN_INFO "BIOS-provided physical RAM map:\n");
print_memory_map(machine_specific_memory_setup()); /* ´¦ÀíÄÚ´æÍ¼,×îºó±£´æÔÚe820ÖÐ */
}

copy_edd(); /* ¸´ÖÆÔöÇ¿´ÅÅ̲ÎÊý(À´Ö®setup×Ô¼ìÐÅÏ¢),ʵÑéÐÔÖÊ,CONFIG_EDD */

cnmyth ·¢±íÓÚ 2007-10-2 15:17

static void __init print_memory_map(char *who)
{
int i;

for (i = 0; i  < e820.nr_map; i++) {
printk(" %s: %016Lx - %016Lx ", who,
e820.map[i].addr,
e820.map[i].addr + e820.map[i].size);
switch (e820.map[i].type) {
case E820_RAM: printk("(usable)\n");
break;
case E820_RESERVED:
printk("(reserved)\n");
break;
case E820_ACPI:
printk("(ACPI data)\n");
break;
case E820_NVS:
printk("(ACPI NVS)\n");
break;
default: printk("type %lu\n", e820.map[i].type);
break;
}
}
}

´òÓ¡³öÀ´e820.nr_mapµÄ´óСΪ11£¬Ñ­»·µ½10¾ÍÍ£ÁË

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.