如何从Linux内核获取包括保留内存在内的物理内存?

时间:2020-03-26 12:21:57

标签: c linux memory kernel

来自linux的proc.txt:

MemTotal: Total usable ram (i.e. physical ram minus a few reserved

但是如何从Linux内核获取整个物理内存包括保留的内存?

1 个答案:

答案 0 :(得分:0)

physpages = get_num_physpages();
pr_info("Memory: %luK/%luK available (%luK kernel code, %luK rwdata, %luK rodata, %luK init, %luK bss, %luK reserved, %luK cma-reserved"
#ifdef  CONFIG_HIGHMEM
        ", %luK highmem"
#endif
        "%s%s)\n",
        nr_free_pages() << (PAGE_SHIFT - 10),
        physpages << (PAGE_SHIFT - 10),
        codesize >> 10, datasize >> 10, rosize >> 10,
        (init_data_size + init_code_size) >> 10, bss_size >> 10,
        (physpages - totalram_pages() - totalcma_pages) << (PAGE_SHIFT - 10),
        totalcma_pages << (PAGE_SHIFT - 10),
#ifdef  CONFIG_HIGHMEM
        totalhigh_pages() << (PAGE_SHIFT - 10),
#endif
        str ? ", " : "", str ? str : "");

因此get_num_physpages << (PAGE_SHIFT - 10)将获得整个物理内存。

相关问题