summaryrefslogtreecommitdiff
path: root/kernel
AgeCommit message (Collapse)Author
2024-06-25kernel: interrupt: create a generic interrupt APIDanny Holman
Create a generic interface for drivers to make use of interrupt vectors. This API should be platform-agnostic enough to allow any driver to make use of virtually any interrupt vector on any CPU. On x86, the first 32 interrupts are set aside for CPU exceptions, and interrupt 128 is set aside for system calls. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-06-24kernel: panic: generate a stack frame on panicDanny Holman
Add a function that generates and prints a stack trace to the screen. This function relies on walk_stack() being implemented on the target architecture. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-29kernel: sched: implement the round-robin schedulerDanny Holman
Implement a basic round-robin scheduler and tie it to the PIT timer interrupt on x86. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-27arch: i386: pmem: refactor the physical MMDanny Holman
Refactor the physical memory manager to be dramatically simpler. The new design uses only a single freelist, and only uses temporary mappings where needed. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-05-27libk: create a subset libc for kernel useDanny Holman
Create a subset of the C library for use inside the kernel. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-03-28kernel: sched: add a flag that is set on initDanny Holman
Add a flag that is set to 1 when the scheduler_init function is called. This allows the PIT interrupt to preempt the current thread and schedule the next one according to the scheduler's internal agorithm. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-03-28kernel: add a basic thread schedulerDanny Holman
Add a basic thread scheduler. This should allow the kernel to schedule threads according to the round robin algorithm. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-03-28arch: i386: kernel: implement a kmalloc functionDanny Holman
Add a basic kmalloc implementation. This allows the kernel to allocate blocks smaller than a whole page. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-03-28arch: i386: kernel: add mostly finished PFA and paging systemDanny Holman
Add the mostly finished physical memory allocator and expose its functions to the paging system. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-24kernel: string: add a strcpy functionDanny Holman
Add an implmentation of strcpy. This function is used in several places in the kernel to copy strings between memory addresses. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-24arch: i386: cleanup everything and reorganizeDanny Holman
Clean up everything in the i386 arch directory. This code has been in dire need of refactoring for a long while. All the inline assembly functions and the data structures related to the architecture should be placed into their own header file. Now the scheduler can access registers and ISRs without having to deal with arch-specific code. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16kernel: panic: add a variable that locks other CPUsDanny Holman
Add a static variable to the panic function that should lock all other CPUs. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16kernel: mem: kmalloc should not call page allocationDanny Holman
Strip the code calling for the memory manager to allocate pages to kmalloc. The function should just return a raw pointer while a page fault will allocate the required memory. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16kernel: add a panic functionDanny Holman
Add a panic function that stops the current CPU and prints an error message into the ring buffer. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16kernel: string: add more functions to string libraryDanny Holman
Add more functions to the string library to process buffers and strings. Signed-off-by: Danny Holman <dholman@gymli.org>
2024-02-16kernel: make kprintf print to a ring bufferDanny Holman
The function kprintf should print to an internal ringbuffer instead of directly to the framebuffer. This reduces dependence on the existence of a framebuffer in the first place. Signed-off-by: Danny Holman <dholman@gymli.org>
2023-11-26kernel: mem: add a simple kmalloc implementationDanny Holman
Add a simple implementation of kmalloc. This system only works on x86-based processors at the time of commit. Signed-off-by: Danny Holman <dholman@gymli.org>
2021-08-30i386: create idt.c and isr.sDanny Holman
Create files that add IDT support for i386. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-07-24arch: i386: add GDT setup routinesDanny Holman
Add a set of routines that setup the x86's global descriptor table. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-07-20io: prefix a 'k' to print functionsDanny Holman
Add a 'k' prefix to the kernel versions of the printf family.
2021-01-20serial: add serial_writestring as a functionDanny Holman
Add a function in the serial interface that writes an entire string to the serial line. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-20kernel: iterate over string with indexDanny Holman
Iterate over a formatted string with an index and strlen instead of using a non-const pointer. The latter method may result in unsafe memory conditions. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-20kernel: maintain const on stringsDanny Holman
Keep const pointers const when casting from void to char. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-20serial: don't declare serial_init as staticDanny Holman
The function serial_init should not be declared as static. This function could change under a different architecture and should be defined with the target architecture. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-20i386: add serial port supportDanny Holman
Add support for serial communication in the i386 architecture. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-18kernel: finish implementing string functionsDanny Holman
Finish implementing the functions from string.h in string.c. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-17kernel: implement a basic printf functionDanny Holman
Implement a basic printf function using primitives from the TTY library. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-17kernel: add main initialization functionsDanny Holman
Add the main initialiazation functions within the main kernel directory. Signed-off-by: Danny Holman <dholman@gymli.xyz>
2021-01-17kernel: add string.h implementationsDanny Holman
Add implementations for functions declared in string.h. Signed-off-by: Danny Holman <dholman@gymli.xyz>