aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFranklin Wei <frankhwei536@gmail.com>2015-02-07 10:08:34 -0500
committerFranklin Wei <frankhwei536@gmail.com>2015-02-07 10:08:34 -0500
commit873a103fb71d6b7b1993a64535a7fa150317ca3c (patch)
tree4290bfee363c455d4e6dd1a30732fd306e7d23b6 /kernel
parent9d7d5c592702e23f1108046d42d5cf550ab9633e (diff)
downloadkappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.zip
kappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.tar.gz
kappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.tar.bz2
kappa-873a103fb71d6b7b1993a64535a7fa150317ca3c.tar.xz
refactor stdio
Diffstat (limited to 'kernel')
-rw-r--r--kernel/include/log.h4
-rw-r--r--kernel/log.c26
-rw-r--r--kernel/main.c15
3 files changed, 23 insertions, 22 deletions
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);