diff --git a/.gitignore b/.gitignore index f9e92a4b..db81938b 100644 --- a/.gitignore +++ b/.gitignore @@ -34,4 +34,7 @@ programs/mount/mount programs/uptime/uptime programs/df/df programs/dist/ -tstl/tester \ No newline at end of file +tstl/tester + +# Ignore the generated log (Qemu) +kernel.log diff --git a/Makefile b/Makefile index db759a8e..1fdccea4 100644 --- a/Makefile +++ b/Makefile @@ -40,7 +40,11 @@ thor.flp: hdd.img bootloader/stage1.bin bootloader/stage2.bin kernel/kernel.bin sudo /sbin/losetup -d /dev/loop0 qemu: default - qemu-system-x86_64 -enable-kvm -cpu host -vga std -hda hdd.img + touch kernel.log + qemu-system-x86_64 -enable-kvm -cpu host -serial file:kernel.log -vga std -hda hdd.img & + echo "Reading kernel log (Ctrl+C for exit)" + tail -f kernel.log + kill %1 bochs: default echo "c" > commands diff --git a/kernel/include/virtual_debug.hpp b/kernel/include/virtual_debug.hpp index 1184fa27..dad6e5d0 100644 --- a/kernel/include/virtual_debug.hpp +++ b/kernel/include/virtual_debug.hpp @@ -12,6 +12,7 @@ //TODO Integrate Qemu Serial debugging #include "kernel_utils.hpp" +#include "serial.hpp" #define BOCHS_E9 0xE9 @@ -30,9 +31,17 @@ inline void bochs_print(const char* s){ } } +inline void serial_print(const char* s){ + for(uint64_t i = 0; s[i] != '\0'; ++i){ + serial::transmit(s[i]); + } +} + inline void virtual_debug(const char* s){ if(is_bochs_e9()){ bochs_print(s); + } else { + serial_print(s); } }