mirror of https://github.com/tailix/libkernaux.git
Print Multiboot 2 memory map tag
This commit is contained in:
parent
36dbe4b8a9
commit
5d2f20f6b3
|
@ -4,6 +4,12 @@ static const char *KernAux_Multiboot2_TagType_to_str(
|
|||
enum KernAux_Multiboot2_TagType tag_type
|
||||
);
|
||||
|
||||
static void KernAux_Multiboot2_Tag_MemoryMap_print(
|
||||
const struct KernAux_Multiboot2_Tag_MemoryMap *tag,
|
||||
void (*print)(const char *format, ...)
|
||||
)
|
||||
__attribute__((nonnull));
|
||||
|
||||
const char *KernAux_Multiboot2_TagType_to_str(
|
||||
enum KernAux_Multiboot2_TagType tag_type
|
||||
) {
|
||||
|
@ -148,9 +154,10 @@ void KernAux_Multiboot2_TagBase_print(
|
|||
}
|
||||
break;
|
||||
case KERNAUX_MULTIBOOT2_TAGTYPE_MEMORY_MAP:
|
||||
{
|
||||
// TODO: print
|
||||
}
|
||||
KernAux_Multiboot2_Tag_MemoryMap_print(
|
||||
(struct KernAux_Multiboot2_Tag_MemoryMap*)tag_base,
|
||||
print
|
||||
);
|
||||
break;
|
||||
case KERNAUX_MULTIBOOT2_TAGTYPE_VBE_INFO:
|
||||
{
|
||||
|
@ -254,3 +261,33 @@ void KernAux_Multiboot2_TagBase_print(
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void KernAux_Multiboot2_Tag_MemoryMap_print(
|
||||
const struct KernAux_Multiboot2_Tag_MemoryMap *const tag,
|
||||
void (*print)(const char *format, ...)
|
||||
) {
|
||||
if (!KernAux_Multiboot2_Tag_MemoryMap_is_valid(tag)) {
|
||||
print(" invalid!\n");
|
||||
return;
|
||||
}
|
||||
|
||||
print(" entry size: %u\n", tag->entry_size);
|
||||
print(" entry version: %u\n", tag->entry_version);
|
||||
|
||||
print(" entries:\n");
|
||||
|
||||
const struct KernAux_Multiboot2_Tag_MemoryMap_EntryBase *const entries =
|
||||
(struct KernAux_Multiboot2_Tag_MemoryMap_EntryBase*)tag->data;
|
||||
|
||||
for (
|
||||
unsigned int index = 0;
|
||||
index < (tag->base.size - sizeof(*tag)) / tag->entry_size;
|
||||
++index
|
||||
) {
|
||||
print(" entry %u\n", index);
|
||||
print(" base addr: %llu\n", entries[index].base_addr);
|
||||
print(" length: %llu\n", entries[index].length);
|
||||
print(" type: %u\n", entries[index].type);
|
||||
print(" reserved1: %u\n", entries[index].reserved1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,6 +46,39 @@ static const char output[] =
|
|||
"Multiboot 2 tag\n"
|
||||
" type: 6 (memory map)\n"
|
||||
" size: 160\n"
|
||||
" entry size: 24\n"
|
||||
" entry version: 0\n"
|
||||
" entries:\n"
|
||||
" entry 0\n"
|
||||
" base addr: 0\n"
|
||||
" length: 654336\n"
|
||||
" type: 1\n"
|
||||
" reserved1: 0\n"
|
||||
" entry 1\n"
|
||||
" base addr: 654336\n"
|
||||
" length: 1024\n"
|
||||
" type: 2\n"
|
||||
" reserved1: 0\n"
|
||||
" entry 2\n"
|
||||
" base addr: 983040\n"
|
||||
" length: 65536\n"
|
||||
" type: 2\n"
|
||||
" reserved1: 0\n"
|
||||
" entry 3\n"
|
||||
" base addr: 1048576\n"
|
||||
" length: 133038080\n"
|
||||
" type: 1\n"
|
||||
" reserved1: 0\n"
|
||||
" entry 4\n"
|
||||
" base addr: 134086656\n"
|
||||
" length: 131072\n"
|
||||
" type: 2\n"
|
||||
" reserved1: 0\n"
|
||||
" entry 5\n"
|
||||
" base addr: 4294705152\n"
|
||||
" length: 262144\n"
|
||||
" type: 2\n"
|
||||
" reserved1: 0\n"
|
||||
"Multiboot 2 tag\n"
|
||||
" type: 9 (ELF symbols)\n"
|
||||
" size: 420\n"
|
||||
|
|
Loading…
Reference in New Issue