From 873a103fb71d6b7b1993a64535a7fa150317ca3c Mon Sep 17 00:00:00 2001 From: Franklin Wei Date: Sat, 7 Feb 2015 10:08:34 -0500 Subject: refactor stdio --- kernel/include/log.h | 4 +++- kernel/log.c | 26 +++++++++++++------------- kernel/main.c | 15 +++++++-------- 3 files changed, 23 insertions(+), 22 deletions(-) (limited to 'kernel') diff --git a/kernel/include/log.h b/kernel/include/log.h index 73a5545..fb29dd3 100644 --- a/kernel/include/log.h +++ b/kernel/include/log.h @@ -1 +1,3 @@ -void klog(const char*, ...); +int log_putchar(char); +int log_puts(const char*); +void log(const char*, ...); diff --git a/kernel/log.c b/kernel/log.c index cfe2922..3f509c5 100644 --- a/kernel/log.c +++ b/kernel/log.c @@ -5,35 +5,35 @@ #define BOCHS_PUTCHAR(ch) (outb(0xe9, ch)) -static int eputchar(int ch) +int log_putchar(int ch) { BOCHS_PUTCHAR(ch); return 0; } -static int eputs(const char* str) +int log_puts(const char* str) { while(*str) - putchar(*str++); + log_putchar(*str++); return 0; } -static char ehex_table[16] = { '0', '1', '2', '3', '4', '5', '6', '7', +static char hex_table[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; -static void eprint_hex(unsigned int n) +static void log_print_hex(unsigned int n) { unsigned mask = 0xF0000000; unsigned shift = 28; while(mask) { - eputchar(ehex_table[(n & mask) >> shift]); + log_putchar(hex_table[(n & mask) >> shift]); mask >>= 4; shift -= 4; } } -int klog(const char *fmt, ...) +int log(const char *fmt, ...) { va_list ap; va_start(ap, fmt); @@ -47,25 +47,25 @@ int klog(const char *fmt, ...) switch(*fmt++) { case 'c': - eputchar(va_arg(ap, int)); + log_putchar(va_arg(ap, int)); break; case 's': - eputs(va_arg(ap, const char*)); + log_puts(va_arg(ap, const char*)); break; case 'x': - eprint_hex(va_arg(ap, unsigned)); + log_print_hex(va_arg(ap, unsigned)); break; case 'd': - eputs(itoa(va_arg(ap, unsigned), 10)); + log_puts(itoa(va_arg(ap, unsigned), 10)); break; default: - eputs("klog: unknown format\n"); + log_puts("klog: unknown format\n"); break; } break; } default: - eputchar(ch); + log_putchar(ch); break; } } diff --git a/kernel/main.c b/kernel/main.c index 748fc7f..9082859 100644 --- a/kernel/main.c +++ b/kernel/main.c @@ -14,12 +14,12 @@ void main(struct multiboot_info_t *hdr, uint32_t magic) { - klog("main() called\n"); + /* this should go to port e9, which is the Bochs debug port */ + printf("Testing early I/O\n"); /* initialize the TTY first, no real harm can be done */ tty_init(); - klog("tty done, magic %x\n", magic); if(magic != 0x2BADB002) { panic("Multiboot magic invalid"); @@ -27,10 +27,6 @@ void main(struct multiboot_info_t *hdr, uint32_t magic) vga_init((struct vbe_info_t*)hdr->vbe_mode_info); - klog("multiboot header address: %x\n", hdr); - klog("multiboot vbe info struct address: %x\n", hdr->vbe_mode_info); - klog("multiboot framebuffer: %x\n", ((struct vbe_info_t*)hdr->vbe_mode_info)->physbase); - /* then the descriptor tables so we can do more useful stuff */ gdt_init(); idt_init(); @@ -46,9 +42,12 @@ void main(struct multiboot_info_t *hdr, uint32_t magic) asm("sti"); printf("Boot finished.\n"); - printf("Testing keyboard LED's...\n"); + for(int i=0;i<50;++i) - vga_drawpixel(i, i, 0x80808080); + vga_drawpixel(i, i, VGA_RGBPACK(255, 0, 0)); + + printf("Testing keyboard LED's...\n"); + while(1) { ps2_set_leds(PS2_NUM_LOCK); -- cgit v1.1