Qemu debugging via serial port

This commit is contained in:
Baptiste Wicht 2016-07-02 15:05:08 +02:00
parent 9efd6430c2
commit 7d7b131911
3 changed files with 18 additions and 2 deletions

5
.gitignore vendored
View File

@ -34,4 +34,7 @@ programs/mount/mount
programs/uptime/uptime
programs/df/df
programs/dist/
tstl/tester
tstl/tester
# Ignore the generated log (Qemu)
kernel.log

View File

@ -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

View File

@ -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);
}
}