Age | Commit message (Collapse) | Author |
|
Fix several triple-faulting bugs in the paging initialization routines.
These include causing a page fault during physical memory manager
initialization, causing a page fault during paging initialization and
other double-faulting and triple-faulting bugs.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
Update all the files under arch to make use of the new libk
implementation. Most of these changes are simply path changes in include
directives.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add two functions to control thread-local spinlocks.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a third argument to i386_entry. This argument is the bootstrap page
directory. Pages can be temporarily mapped in during the initialization
of the paging system.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Create a subdirectory branching from the project root. This directory
will contain nothing but driver and device code.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Create a subset of the C library for use inside the kernel.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
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>
|
|
Add the mostly finished physical memory allocator and expose its
functions to the paging system.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
Move the function that jumps to ring 3 to its own assembly file.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Update the copyright year and contact email in the README file.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a basic driver for the PS/2 keyboard. This driver just prints
whatever it receives back out to the framebuffer.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a static variable to the panic function that should lock all other
CPUs.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
The VMM should control the physical memory as well as paging. This
allows the VMM to grab frames as it sees fit.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Move all the data structures required for operation of the GDT to their
own header file.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Move all the architecture-specific initialization calls to this file.
This frees up the main function to initialize other parts of the kernel.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Move all the functions that control IRQ lines to the PIC driver. This
allows the IDT controller to handle only raw interrupts no matter where
they come from.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Move simple assembly calls to their own header. All one or two line
assembly calls should be defined in a single place.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
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>
|
|
Add functions to the syscall handlers that dump registers and stack in
case of catastrophic failure.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Fix a bug in the GDT that prevented the kernel from jumping to userspace
correctly.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
The code that constructs an isr_frame struct should not push ESP to the
stack. In addition, the kernel should set its own copy of ESP into a
function defined elsewhere for scheduling purposes.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a set of functions that control the programmable interrupt timer.
This will be used as the primary means of preemption on this
architecture.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add the container_of.h file that defines the container_of macro. This
macro allows the kernel to get the parent struct of a pointer with an
offset.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add more functions to the string library to process buffers and strings.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Move all operations related to the x86 framebuffer into its own set of
files. This makes the TTY layer more architecture agnostic.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Make the serial driver behave more like a standard POSIX call. It should
have write and read functions that call architecture specific functions.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
Move list.h into a designated directory for data structure definitions.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Remove an inline assembly instruction that was placed for debugging
purposes.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add new source files to the x86 architecture build configuration.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add references to the PMM bitmap to the linker script.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a linked-list implementation using the kmalloc system.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
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>
|
|
Add a proper page control API. These functions allow the kernel to
directly map and unmap pages in the logical address space.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add a simple, bitmap-based physical memory management system.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Add support for the multiboot specification. These files will allow the
kernel to read the multiboot header information as well as the provided
memory map.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Make the function serial_writestring static. This is an optimization
specifically for small functions such as this one.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Remove an unused local variable from tty_putchar. Instead, just cast the
signed char to unsigned as needed.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Replace individual function calls with a single switch-case structure
for system calls. The new function, handle_syscall, will construct and
call the interrupt without input from the programmer.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Finish implementing pic_eoi and similar. This allows standardized
communication with the x86 PIC chip.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Define a few standard Unix system calls. These may change based on
future needs.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Make the register_irq_function accessible from files including pic.h.
Signed-off-by: Danny Holman <dholman@gymli.org>
|
|
Make all variables with char or char* type into uint8_t. This makes the
system more consistent and issues fewer compiler warnings.
Signed-off-by: Danny Holman <dholman@gymli.org>
|