X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flib%2Fkernel%2Fconsole.c;h=865b13b2cd810b0805acead8ec9f4e3e038f609a;hb=615bf3b3d2a8573ed6fb9ddc0055745e163ac999;hp=d09801d984a6f2250b18f15d819dc781c521f741;hpb=5780c9f434cca090f88463b7f0199d49b4ded288;p=pintos-anon diff --git a/src/lib/kernel/console.c b/src/lib/kernel/console.c index d09801d..865b13b 100644 --- a/src/lib/kernel/console.c +++ b/src/lib/kernel/console.c @@ -49,7 +49,7 @@ static int64_t write_cnt; void console_init (void) { - lock_init (&console_lock, "console"); + lock_init (&console_lock); } /* Prints console statistics. */ @@ -85,6 +85,14 @@ release_console (void) } } +/* Returns true if the current thread has the console lock, + false otherwise. */ +static bool +console_locked_by_current_thread (void) +{ + return intr_context () || lock_held_by_current_thread (&console_lock); +} + /* The standard vprintf() function, which is like printf() but uses a va_list. Writes its output to both vga display and serial port. */ @@ -150,6 +158,7 @@ vprintf_helper (char c, void *char_cnt_) static void putchar_unlocked (uint8_t c) { + ASSERT (console_locked_by_current_thread ()); write_cnt++; serial_putc (c); vga_putc (c);