summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--kernel/init.c30
-rw-r--r--libk/io.c (renamed from kernel/io.c)20
-rw-r--r--libk/string.c (renamed from kernel/string.c)11
3 files changed, 31 insertions, 30 deletions
diff --git a/kernel/init.c b/kernel/init.c
index 98ac05c..d4a3638 100644
--- a/kernel/init.c
+++ b/kernel/init.c
@@ -1,31 +1,35 @@
-#include <kernel/io.h>
+#include <libk/io.h>
+#include <libk/string.h>
+#include <libk/kmalloc.h>
#include <kernel/sched.h>
-#include <kernel/kmalloc.h>
-#include <kernel/string.h>
+#include <kernel/kthread.h>
+#include <kernel/pci.h>
#include <kernel/serial.h>
void jump_userspace(void);
char rootfs[1024];
-
-int start_init(int argc, char* argv[]) {
- while (1);
- return 0;
-}
+char init_bin[1024];
+int gdbstub = 0;
void process_cmd(char *cmdline) {
char *token = strtok(cmdline, " ");
while (token != NULL) {
if (strncmp(token, "root=", 5) == 0)
- strcpy(rootfs, &token[6]);
+ strcpy(rootfs, &token[5]);
+ if (strncmp(token, "init=", 5) == 0)
+ strcpy(init_bin, &token[5]);
+ if (strncmp(token, "gdb", 3) == 0)
+ gdbstub = 1;
+ token = strtok(NULL, " ");
}
}
void kernel_main(char *cmdline) {
- kmalloc_init();
- kprintf("Box Kernel version %s\n", VERSION);
+ kprintf("Box kernel version %s\n", VERSION);
+ process_cmd(cmdline);
+
serial_init();
sched_init();
-
- //jump_userspace();
+ //pci_check_buses();
}
diff --git a/kernel/io.c b/libk/io.c
index 0a4ba6d..eedc171 100644
--- a/kernel/io.c
+++ b/libk/io.c
@@ -1,10 +1,7 @@
-#include <kernel/io.h>
-#include <kernel/framebuffer.h>
-#include <kernel/data/ringbuf.h>
-#include <kernel/string.h>
-
-static int ringbuf_init = 0;
-static struct ringbuf rb;
+#include <libk/io.h>
+#include <libk/string.h>
+#include <kernel/video/framebuffer.h>
+#include <kernel/tty/tty_vga.h>
char* convert(unsigned int num, int base) {
static char rep[] = "0123456789ABCDEF";
@@ -23,15 +20,11 @@ char* convert(unsigned int num, int base) {
}
int vkprintf(const char *fmt, va_list args) {
- if (ringbuf_init == 0) {
- rb_init(&rb, 1024, 4096);
- ringbuf_init = 1;
- }
-
char *s;
int i;
char buffer[4096];
+ memset(buffer, 0, 4096);
for (size_t n = 0; n < strlen(fmt); n++) {
if (fmt[n] != '%') {
buffer[strlen(buffer)] = fmt[n];
@@ -67,7 +60,8 @@ int vkprintf(const char *fmt, va_list args) {
break;
}
}
- rb_push_back(&rb, buffer, strlen(buffer));
+ //tty_write(buffer, strlen(buffer));
+ fb_write(buffer, strlen(buffer));
memset(buffer, 0, 4096);
return 0;
}
diff --git a/kernel/string.c b/libk/string.c
index fa0fd3f..be59397 100644
--- a/kernel/string.c
+++ b/libk/string.c
@@ -1,4 +1,4 @@
-#include <kernel/string.h>
+#include <libk/string.h>
int memcmp(const void *str1, const void *str2, size_t n) {
unsigned char const *p1 = str1;
@@ -32,16 +32,15 @@ void* memcpy(void* __restrict dest, const void* __restrict src, size_t n) {
}
char* strncpy(char* __restrict dest, const char* __restrict src, size_t n) {
- for (int i = 0; i < n; i++) {
+ for (size_t i = 0; i < n; i++) {
if (src[i] == '\0')
break;
dest[i] = src[i];
}
+ return dest;
}
char* strcpy(char* __restrict dest, const char* __restrict src) {
- if (strlen(src) > strlen(dest))
- return NULL;
return (char*)memcpy(dest, src, strlen(src));
}
@@ -49,6 +48,10 @@ char* strcat(char* __restrict dest, const char* __restrict src) {
return (char*)memcpy(&dest[strlen(dest)], src, strlen(src));
}
+char* strncat(char* __restrict dest, const char* __restrict src, size_t n) {
+ return (char*)memcpy(&dest[strlen(dest)], src, n);
+}
+
void* memmove(void* __restrict dest, const void* __restrict src, size_t n) {
if (dest == src)
return dest;