X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b26d3165c52589d1f8de37bf0df27ad96f460f47..1fe5f5eb5378a47bf0f3451762743c162e40faad:/lunaix-os/scripts/test_ksyms.c diff --git a/lunaix-os/scripts/test_ksyms.c b/lunaix-os/scripts/test_ksyms.c new file mode 100644 index 0000000..dbc33b0 --- /dev/null +++ b/lunaix-os/scripts/test_ksyms.c @@ -0,0 +1,48 @@ +#include +#include +#include +#include +#include + +struct ksyms_meta +{ + unsigned int entries; + unsigned int label_off_base; +}; + +struct ksyms_entry +{ + unsigned int addr; + unsigned int off; +}; + +void +main() +{ + int fd = open("ksyms", O_RDONLY); + void* data = mmap(0, 0x6000, PROT_READ, MAP_PRIVATE, fd, 0); + + printf("mapped at: %p\n", data); + + if (data == 0) { + printf("unable to map, %d", errno); + return; + } + + close(fd); + + struct ksyms_meta* meta = (struct ksyms_meta*)data; + + printf( + "entires: %d, label_base: %p\n", meta->entries, meta->label_off_base); + + struct ksyms_entry* entries = (struct ksyms_entry*)(meta + 1); + for (int i = 0; i < meta->entries; i++) { + struct ksyms_entry* entry = &entries[i]; + printf( + "addr: %p, off: %p, label: %s\n", + entry->addr, + entry->off, + (char*)((unsigned long)data + meta->label_off_base + entry->off)); + } +}