kgetc() reads a single character via keyboard_read_blocking(),
providing a symmetric API alongside kprintf() for output.
This enables the kernel console (and future kconsole) to have
a generic input mechanism independent of architecture.
Passes: make, cppcheck, QEMU smoke test.
void kprintf(const char* fmt, ...);
+int kgetc(void);
+
size_t klog_read(char* out, size_t out_size);
#endif
#include "spinlock.h"
#include "uart_console.h"
#include "vga_console.h"
+#include "keyboard.h"
static spinlock_t g_console_lock = {0};
static int g_console_uart_enabled = 1;
console_write(buf);
}
+int kgetc(void) {
+ char c = 0;
+ int rd = keyboard_read_blocking(&c, 1);
+ if (rd <= 0) return -1;
+ return (int)(unsigned char)c;
+}
+
size_t klog_read(char* out, size_t out_size) {
if (!out || out_size == 0) return 0;