DTrace script that prints out the physical memory map from EFI. Mimics the output format of the kernel debugging macro of the same name.
#! /usr/sbin/dtrace -s
/*
* showbootermemorymap - DTrace script that prints out the physical memory
* map from EFI. Mimics the output format of the
* kernel debugging macro of the same name.
*
* Amit Singh
* http://osxbook.com
*/
#pragma D option quiet
BEGIN
{
self->inited = 1;
self->kgm_boot_args = ((struct boot_args*)(`PE_state).bootArgs);
self->kgm_msize = self->kgm_boot_args->MemoryMapDescriptorSize;
self->kgm_mcount = self->kgm_boot_args->MemoryMapSize / self->kgm_msize;
printf("Type Physical Start Number of Pages\n");
self->kgm_i = 0;
}
fbt:::entry
/self->inited && self->kgm_i < self->kgm_mcount/
{
this->kgm_mptr = (struct EfiMemoryRange*)
((unsigned long)self->kgm_boot_args->MemoryMap +
self->kgm_i * self->kgm_msize);
self->kgm_i++;
printf("%s", (this->kgm_mptr->Type == 0) ? "reserved " :
(this->kgm_mptr->Type == 1) ? "LoaderCode" :
(this->kgm_mptr->Type == 2) ? "LoaderData" :
(this->kgm_mptr->Type == 3) ? "BS_code " :
(this->kgm_mptr->Type == 4) ? "BS_data " :
(this->kgm_mptr->Type == 5) ? "RT_code " :
(this->kgm_mptr->Type == 6) ? "RT_data " :
(this->kgm_mptr->Type == 7) ? "available " :
(this->kgm_mptr->Type == 8) ? "Unusable " :
(this->kgm_mptr->Type == 9) ? "ACPI_recl " :
(this->kgm_mptr->Type == 10) ? "ACPI_NVS " :
(this->kgm_mptr->Type == 11) ? "MemMapIO " :
(this->kgm_mptr->Type == 12) ? "MemPortIO " :
(this->kgm_mptr->Type == 13) ? "PAL_code " :
"UNKNOWN ");
printf(" %016llx %016llx\n",
this->kgm_mptr->PhysicalStart, this->kgm_mptr->NumberOfPages);
}
fbt:::return
/self->inited && self->kgm_i >= self->kgm_mcount/
{
exit(0);
}