diff --git a/src/kernel/debugcon.cpp b/src/kernel/debugcon.cpp index 8167555..d3a456c 100644 --- a/src/kernel/debugcon.cpp +++ b/src/kernel/debugcon.cpp @@ -21,8 +21,8 @@ namespace { } inline void debug_endline() { - static const char *newline = "\e[38;5;0m\r\n"; - asm ( "rep outsb;" :: "c"(11), "d"(port), "S"(newline) ); + static const char *newline = "\e[0m\r\n"; + asm ( "rep outsb;" :: "c"(6), "d"(port), "S"(newline) ); } } // anon namespace @@ -64,7 +64,6 @@ logger_task() uint64_t seen = 0; size_t buf_size = 128; uint8_t *buf = new uint8_t [buf_size]; - entry *header = reinterpret_cast(buf); while (true) { size_t size = g_logger.get_entry(seen, buf, buf_size); @@ -72,12 +71,16 @@ logger_task() delete [] buf; buf_size *= 2; buf = new uint8_t [buf_size]; - header = reinterpret_cast(buf); continue; } - output(header); - seen = header->id; + entry *header = reinterpret_cast(buf); + while (size > sizeof(entry)) { + output(header); + seen = header->id; + size -= header->bytes; + header = util::offset_pointer(header, header->bytes); + } } }