57 Commits

Author SHA1 Message Date
fdb77277a7
Renamed Maybe to maybe. Moved tracking of filehandlers to be per-process rather than global. Various improvements to code. 2022-06-18 11:42:09 +01:00
da5fc52afe
Updated the KernelInformationStruct, added BGA (Bochs Graphics Extensions) mode termimal, added new system calls to get terminal width. Updated world.bin to calculate sizes. Fixed a bug where GetExhaustive would crash when given a completely null path. Started work on V86 for VBE support. 2022-05-16 09:57:09 +01:00
6339b3e4bd
Added spinlocks 2022-04-15 21:10:10 +01:00
dc2fe698a3
Added oneshot timer functionality. Added sleep function. Added proper tracking of physical pages allocated. Made the 0th page invalid. Fixed a 4KiB memory leak when destroying processes. Fixed scrolling colour in terminal.cpp 2022-04-15 16:15:51 +01:00
0fc40ad5e4
Add system calls for more file system related functionality. Add ls command to world.c. Remove and reorganise certain source code files. Update terminal to no longer have two copies of ANSI escape code handling between write and printf. Massively simplify my printf function. Combine io and ioports. 2022-04-12 03:42:13 +01:00
8f4382793c
Fixed spelling mistake 2022-04-09 00:31:08 +01:00
bb69d6b713
Update how syscalls accept arguments in registers, change how syscalls are defined in common.c and common.h 2022-04-08 18:00:56 +01:00
7e5f20ef66
Added sleep syscall 2022-04-08 02:01:25 +01:00
a0d0454e32
Moved to a new Filesystem, ATA and FAT16 driver. 2022-04-06 14:46:47 +01:00
232e333a62
Added VGA Mode Terminal. Updated context_switch and isr.S.base to perform the actual context switch during catchall_return. Program the PIT properly. Implemented timed events. Updated process.cpp. Added a font. Fixed bug in CircularRWBuffer. 2022-02-20 11:30:39 +00:00
5c05866d5d
Added kill syscall 2022-02-14 14:37:48 +00:00
2f2a7a3e45
Added file reading via filehandlers. Added support for directories. Processes are now created using filehandlers. 2022-01-19 16:51:37 +00:00
2bbc81955d
Updated program linker scripts to have link beginning at 0x20 rather than 0x8020. Program binary is now the first thing allocated. 2022-01-19 12:19:52 +00:00
73c0fe429f
Add ability for other processes to bind to eachother's stdin and stdout. Add PoC for this functionality 2022-01-17 19:43:13 +00:00
55a5bea35a
Update keyboard driver, add start of file handlers, stdio. 2022-01-13 13:36:24 +00:00
fc2c73225b
Updated ISR code to properly handle interrupts with error codes. Fixed bug where page faults would clobber the kernel stack 2022-01-09 12:10:57 +00:00
2825c1ff5e
Move to own ISR solution rather than using GCC ISRs. Lots of changes to accomodate that. 2021-12-17 14:00:52 +00:00
57768784a6
Fixed context_switch's handling of the processes linked list, update idt.cpp to add getPID syscall, update memory.cpp to fix but where find_next_available_from would incorrectly return invalid memory locations 2021-12-08 18:49:25 +00:00
02e0bcd70e
Finalise mvoe to Ring 3, add separate kernel stacks for each process, correctly switch between those kernel stacks within context_switch, etc 2021-12-07 22:04:53 +00:00
2ecc53ee91
Moved processes to be in ring 3 2021-12-02 19:36:52 +00:00
a9ec673b24
Implemented necessary changes for Process destruction. Processes clean up their memory when deleted. 2021-12-01 17:05:46 +00:00
b7566ef777
Fixed major bug in hashtable.h that caused the hashtable to not actually store any data 2021-12-01 17:05:17 +00:00
945bd8c2fa
Fixed bug in idt.cpp where context_switch would clobber eax 2021-11-29 09:15:23 +00:00
5d4454e57a
Remove debug code from terminal.cpp. Update kmain, update world.c, update process.cpp to construct the initial value of EBP correctly. 2021-11-27 15:56:35 +00:00
d6c1cc1869
Fix bug in terminal.cpp where it would use incorrect pointers in scroll_up, removed old debug code from kmain.cpp, kernel.cpp no longer appends itself to the process list, update process.cpp to take a filename when constructing a new process. Update idt.cpp to plug context_switch in to int 0x20 (IRQ0) 2021-11-27 13:11:44 +00:00
0bb88e4da8
Add system calls, update keybaord, add Terminal* field to kernel. Update process.cpp to load a program called program.bin from disk rather than hardcoding data 2021-11-27 02:32:28 +00:00
15ca13a985
Update atapio.cpp to use new rather than dumb_alloc, add file_size 2021-11-27 02:31:23 +00:00
ed67adc9c9
Updated kernel to now have its stack past 0xc0000000. Implemented context switching. 2021-11-26 20:20:15 +00:00
2dd799b406
Preparations towards context switching 2021-11-21 16:56:50 +00:00
b79ae4ec95
Updated Hashtable to use xnoe::Maybe, fixed many bugs within hashtable, updated hash 2021-11-21 16:40:16 +00:00
f581e6b6fe
Completely overhauled how GDT is defined to make it much easier to add more entries to the GDT in the future 2021-11-21 16:39:31 +00:00
760069bbb9
Updated Makefile to allow debugging. Update gitignore. 2021-11-12 00:51:45 +00:00
bfa3f3030f
Initial work on dynamically creating Processes in preparation for implementing context switching 2021-11-12 00:30:10 +00:00
01fef9d947
Rename kernel.cpp to kmain.cpp, update Makefile and kernel.ld 2021-11-11 21:55:04 +00:00
0f5e080e15
Reorganised some code. Moved new/delete out of process 2021-11-11 21:52:51 +00:00
e06d98b22a
Add teminal. Update strings. Update screenstuff. 2021-11-11 20:47:08 +00:00
ea62dcddfa
Update README. Remove debug code. 2021-11-10 22:44:22 +00:00
c10c3690a5
A huge amount of changes and additions. Added xnoe::Maybe, fixed xnoe::linkedlist and xnoe::linkedlistelem, fixed bug in Allocator::deallocate, update Process::allocate, implement Process::deallocate, fix operator delete, add Global namespace and Global::allocator, update new, delete, new\[\] and delete\[\], add AllocTracker, etc. Allocations now work how I want them to :D 2021-11-10 18:31:00 +00:00
4a271865e0 Update data types. Update Makefile. Update kernel. Implement Process::allocate. 2021-10-28 14:14:36 +01:00
768ceddef0
Add hash. Add hashtable. Add linkedlist. Separate Process. Begin work on Process. Update memory. Update tuple. Update Makefile. 2021-10-27 23:21:37 +01:00
b4375d1269
Initial version of Allocator complete. Added new, delete, new\[\] and delete\[\]. Preparations for Process and Kernel made 2021-10-25 20:59:49 +01:00
e6e156e255
Implement Allocator. Add virtual page map. Fix PageMap class. 2021-10-25 16:29:53 +01:00
f2e09e98a7 Started work on Allocator class. Update PageMap 2021-10-25 01:13:29 +01:00
9c887a3a50
Began the process of moving XnoeOS to using more OOP constructs. Added PageDirectory class. Added PageTable class. Added tuple data type. Added beginnings of the skeleton for Allocator and Process. 2021-10-23 01:34:54 +01:00
2a68860bef
Made kernel C++ now 2021-10-21 23:19:36 +01:00
cd8bd42ebb
Kernel now handles page faults. 2021-10-21 22:06:27 +01:00
2dcf083763
Properly print out the e820 entry types. Make kernel_directory and kernel_page_tables available to all. Add a memory unmap function. Update Makefile. 2021-10-18 13:50:50 +01:00
b117dee07b
Hopefully fix compilation error encountered on Debian 10 GCC 2021-10-13 12:13:51 +01:00
f44d4ad768
Fixed bug in GDT length calculation in bootloader. Kernel now loads its own GDT so it doesn't clobber itself while touching memory. ATAPIO now loads its own copy of the boot sector so it isn't reliant on 0x7000 being mapped. Removed debug printf statements from a lot of places. 2021-10-12 21:41:31 +01:00
e2bb3ff634
The kernel is now actually useable with paging enabled. 2021-10-12 00:53:02 +01:00