feat: added printf

This commit is contained in:
2021-02-06 16:44:35 +01:00
parent a4651ca9d9
commit 7ff33d611c
5 changed files with 129 additions and 56 deletions

View File

@@ -14,6 +14,7 @@
#include <libk.h>
#include <drivers/pci.h>
#include <drivers/ide.h>
#include <libc/kprintf.h>
#define BOOTLOADER_NAME_MAX_LENGTH 64
#define CMDLINE_MAX_LENGTH 256
@@ -44,12 +45,10 @@ cmd_handler cmd_handlers[] = {
};
void print_bootinfo() {
kprint("Bootloader name: ");
kprint(bootloader_name[0] == 0 ? "NULL" : bootloader_name);
kprint(newline);
kprint("cmdline: ");
kprint(cmdline[0] == 0 ? "NULL" : cmdline);
kprint(newline);
printf("Bootloader name: %s\n"
"cmdline: %s\n",
(bootloader_name[0] == 0 ? "NULL" : bootloader_name),
(cmdline[0] == 0 ? "NULL" : cmdline));
}
void help(const char* arg) {
@@ -59,8 +58,7 @@ void help(const char* arg) {
if (cmd_handlers[index].cmd == NULL) {
break;
}
kprint(cmd_handlers[index].cmd);
kprint(newline);
printf("%s\n", cmd_handlers[index].cmd);
index += 1;
}
@@ -96,16 +94,14 @@ void store_bootloader_info(multiboot_info_t *multiboot_info) {
if (multiboot_info->flags & MULTIBOOT_INFO_CMDLINE) {
int cmdline_length = strlen((const char *) multiboot_info->cmdline);
if (cmdline_length > CMDLINE_MAX_LENGTH) {
kprint("cmdline to long!");
k_panic();
k_panics("cmdline to long!\n");
}
memcpy(cmdline, (char *) multiboot_info->cmdline, cmdline_length);
}
if (multiboot_info->flags & MULTIBOOT_INFO_BOOT_LOADER_NAME) {
int bootloader_length = strlen((const char *) multiboot_info->boot_loader_name);
if (bootloader_length > BOOTLOADER_NAME_MAX_LENGTH) {
kprint("bootloader name to long!");
k_panic();
k_panics("bootloader name to long!\n");
}
memcpy(bootloader_name, (char *) multiboot_info->boot_loader_name, bootloader_length);
}
@@ -117,8 +113,7 @@ void init_mmap(multiboot_info_t *multiboot_info) {
multiboot_info->mmap_length / sizeof(struct multiboot_mmap_entry));
// todo fallback on other mechanisms?
} else {
kprint("mmap invalid!\n");
k_panic();
k_panics("mmap invalid!\n");
}
}
@@ -156,8 +151,10 @@ void kmain(multiboot_info_t *multiboot_info) {
// setup PS/2 keyboard
init_keyboard();
u8* tmp = malloc(4096);
ide_read_access(0, 0, 0, 16, tmp);
// print_gdt();
// u8* tmp = malloc(4096);
// ide_read_access(0, 0, 0, 16, tmp);
// enter main loop
while (true) {