1
0
Fork 0
mirror of https://github.com/tailix/kernel.git synced 2025-02-10 15:36:37 -05:00

Add function "kernelmq_info_validate_and_copy" and example output

This commit is contained in:
Braiden Vasco 2017-11-04 12:01:10 +00:00
parent 03f20e2e8f
commit 78d54a1700
4 changed files with 35 additions and 3 deletions

View file

@ -1,8 +1,12 @@
AS = $(CCPREFIX)as AS = $(CCPREFIX)as
CC = $(CCPREFIX)gcc CC = $(CCPREFIX)gcc
# Architecture-dependent
OBJS = start.s.o OBJS = start.s.o
OBJS += init.c.o OBJS += init.c.o
# Architecture-independent
OBJS += info.c.o
OBJS += main.c.o OBJS += main.c.o
OBJS += logger.c.o OBJS += logger.c.o

14
arch/info.c Normal file
View file

@ -0,0 +1,14 @@
#include <kernelmq/info.h>
unsigned char kernelmq_info_validate_and_copy(
struct KernelMQ_Info *const dest,
const struct KernelMQ_Info *const src
) {
if (!src) {
return 0;
}
*dest = *src;
return 1;
}

View file

@ -3,6 +3,7 @@
#include "protected.h" #include "protected.h"
#include "paging.h" #include "paging.h"
#include "timer.h" #include "timer.h"
#include "kprintf.h"
#include <kernelmq/info.h> #include <kernelmq/info.h>
#include <kernelmq/stdlib.h> #include <kernelmq/stdlib.h>
@ -17,12 +18,23 @@ void main(const struct KernelMQ_Info *const kinfo_ptr)
kmemset(&kinfo, 0, sizeof(struct KernelMQ_Info)); kmemset(&kinfo, 0, sizeof(struct KernelMQ_Info));
if (!kinfo_ptr) { if (!kernelmq_info_validate_and_copy(&kinfo, kinfo_ptr)) {
logger_fail("No kernel information. Halt."); logger_fail("Invalid kernel information. Halt.");
return; return;
} }
kinfo = *kinfo_ptr; kprintf("Kernel command line: %s\n", kinfo.cmdline);
for (unsigned int i = 0; i < kinfo.modules_count; ++i) {
struct KernelMQ_Info_Module *module = &kinfo.modules[i];
kprintf(
"Module at 0x%x, size 0x%x, command line: %s\n",
module->base,
module->size,
module->cmdline
);
}
protected_initialize(); protected_initialize();

View file

@ -62,6 +62,8 @@ struct KernelMQ_Info {
unsigned long kernel_and_modules_total_size; unsigned long kernel_and_modules_total_size;
}; };
unsigned char kernelmq_info_validate_and_copy(struct KernelMQ_Info *dest, const struct KernelMQ_Info *src);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif