feat: moved libk stuff to libk folder

This commit is contained in:
2021-02-27 14:11:28 +01:00
parent 9fdc89a3a6
commit 934deb7984
19 changed files with 19 additions and 19 deletions

37
kernel/libk/kprint.c Normal file
View File

@@ -0,0 +1,37 @@
//
// Created by rick on 28-01-21.
//
#include "kprint.h"
#define MAX_HANDLERS 8
kprint_handler handlers[MAX_HANDLERS] = {
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};
void kprint_register(kprint_handler handler) {
for (int i = 0; i < MAX_HANDLERS; ++i) {
if (handlers[i] == NULL) {
handlers[i] = handler;
break;
}
}
// todo handle
}
void kprint(const char *msg) {
for (int i = 0; i < MAX_HANDLERS; ++i) {
if (handlers[i] == NULL) {
continue;
}
handlers[i](msg);
}
}

16
kernel/libk/kprint.h Normal file
View File

@@ -0,0 +1,16 @@
//
// Created by rick on 28-01-21.
//
#ifndef NEW_KERNEL_KPRINT_H
#define NEW_KERNEL_KPRINT_H
#endif //NEW_KERNEL_KPRINT_H
#include <types.h>
typedef void (*kprint_handler)(const char *);
void kprint_register(kprint_handler);
void kprint(const char *msg);

28
kernel/libk/libk.c Normal file
View File

@@ -0,0 +1,28 @@
//
// Created by rick on 02-02-21.
//
#include <stdbool.h>
#include "libk.h"
#include "kprint.h"
bool k_addr_in_kspace(void* addr) {
return addr > kernel_start && addr < kernel_end;
}
void k_wait_for_interrupt() {
__asm__ __volatile__("hlt;");
}
void k_panics(const char *msg) {
kprint(msg);
kprint("PANIC!");
__asm__ __volatile__("cli;"
"hlt;");
}
void k_panic() {
kprint("PANIC!");
__asm__ __volatile__("cli;"
"hlt;");
}

22
kernel/libk/libk.h Normal file
View File

@@ -0,0 +1,22 @@
//
// Created by rick on 02-02-21.
//
#ifndef NEW_KERNEL_LIBK_H
#define NEW_KERNEL_LIBK_H
#include <stdbool.h>
extern void* _kernel_start;
extern void* _kernel_end;
#define kernel_start ((uint32_t)(&_kernel_start))
#define kernel_end ((uint32_t)(&_kernel_end))
bool k_addr_in_kspace(void *addr);
void k_wait_for_interrupt();
void k_panics(const char *msg);
void k_panic();
#endif //NEW_KERNEL_LIBK_H

22
kernel/libk/syscall.c Normal file
View File

@@ -0,0 +1,22 @@
//
// Created by rick on 22-02-21.
//
#include "syscall.h"
#include <types.h>
#include <attributes.h>
void syscall1(uint32_t arg1) {
__asm__("int $0x80"
:
: "a"(arg1));
}
void syscall_yield_job() {
syscall1(SYSCALL_YIELD_JOB);
}
void noreturn syscall_start_scheduler() {
syscall1(SYSCALL_START_SCHEDULER);
while (1) { __asm__("hlt"); };
}

17
kernel/libk/syscall.h Normal file
View File

@@ -0,0 +1,17 @@
//
// Created by rick on 22-02-21.
//
#ifndef NEW_KERNEL_SYSCALL_H
#define NEW_KERNEL_SYSCALL_H
#include <attributes.h>
#define SYSCALL_START_SCHEDULER 0x01
#define SYSCALL_YIELD_JOB 0x02
void syscall_yield_job();
void noreturn syscall_start_scheduler();
#endif //NEW_KERNEL_SYSCALL_H