Commit Graph

81 Commits

Author SHA1 Message Date
xnoe 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
xnoe cd56b924e1 Correctly mark 0x8a000 + 0x6000 as unavailable, mark the vm_bitmap area as unavailable. Fixed a few comments. 2021-12-07 22:04:21 +00:00
xnoe 2ecc53ee91 Moved processes to be in ring 3 2021-12-02 19:36:52 +00:00
xnoe a9ec673b24 Implemented necessary changes for Process destruction. Processes clean up their memory when deleted. 2021-12-01 17:05:46 +00:00
xnoe 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
xnoe b879ae1e92 Updated world.c to now take user input and print it back to the user when they press enter 2021-11-29 10:11:46 +00:00
xnoe 945bd8c2fa Fixed bug in idt.cpp where context_switch would clobber eax 2021-11-29 09:15:23 +00:00
xnoe 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
xnoe 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
xnoe bfa648d96b Moved syscall related code to common. Add hello.c and world.c in preparation for testing pre-emptive multitasking 2021-11-27 13:10:20 +00:00
xnoe c84a3ffdea Add XnoeOS's first non-kernel program. Test systemcalls 2021-11-27 02:32:43 +00:00
xnoe 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
xnoe 15ca13a985 Update atapio.cpp to use new rather than dumb_alloc, add file_size 2021-11-27 02:31:23 +00:00
xnoe ed67adc9c9 Updated kernel to now have its stack past 0xc0000000. Implemented context switching. 2021-11-26 20:20:15 +00:00
xnoe 2dd799b406 Preparations towards context switching 2021-11-21 16:56:50 +00:00
xnoe b79ae4ec95 Updated Hashtable to use xnoe::Maybe, fixed many bugs within hashtable, updated hash 2021-11-21 16:40:16 +00:00
xnoe 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
xnoe 760069bbb9 Updated Makefile to allow debugging. Update gitignore. 2021-11-12 00:51:45 +00:00
xnoe bfa3f3030f Initial work on dynamically creating Processes in preparation for implementing context switching 2021-11-12 00:30:10 +00:00
xnoe 01fef9d947 Rename kernel.cpp to kmain.cpp, update Makefile and kernel.ld 2021-11-11 21:55:04 +00:00
xnoe 0f5e080e15 Reorganised some code. Moved new/delete out of process 2021-11-11 21:52:51 +00:00
xnoe e06d98b22a Add teminal. Update strings. Update screenstuff. 2021-11-11 20:47:08 +00:00
xnoe ea62dcddfa Update README. Remove debug code. 2021-11-10 22:44:22 +00:00
xnoe 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
xnoe 4a271865e0 Update data types. Update Makefile. Update kernel. Implement Process::allocate. 2021-10-28 14:14:36 +01:00
xnoe 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
xnoe 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
xnoe e6e156e255 Implement Allocator. Add virtual page map. Fix PageMap class. 2021-10-25 16:29:53 +01:00
xnoe f2e09e98a7 Started work on Allocator class. Update PageMap 2021-10-25 01:13:29 +01:00
xnoe 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
xnoe 2a68860bef Made kernel C++ now 2021-10-21 23:19:36 +01:00
xnoe cd8bd42ebb Kernel now handles page faults. 2021-10-21 22:06:27 +01:00
xnoe 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
xnoe b117dee07b Hopefully fix compilation error encountered on Debian 10 GCC 2021-10-13 12:13:51 +01:00
xnoe f9d7581cec Set C standard to gnu11 2021-10-13 12:01:57 +01:00
xnoe 4a44a8030d Hopefully fix compilation error encountered on Debian 10 GCC 2021-10-13 11:56:52 +01:00
xnoe 74b7d7c58c Added .editorconfig 2021-10-12 21:44:52 +01:00
xnoe 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
xnoe e2bb3ff634 The kernel is now actually useable with paging enabled. 2021-10-12 00:53:02 +01:00
xnoe 1225529708 Fixed paging fully now. Kernel is loaded with virtual memory enabled. Just need to write an allocator and make kernel use virtual memory addresses for its stuff. Restructured codebase to be less messy. Updated Makefile to put binary files under build/ rather than in root directory 2021-10-11 20:47:04 +01:00
xnoe 6328062d4f Fixed structs for PDEs and PTEs, got Qemu now properly maps virtual addresses to physical addresses, still triple faults on but I'm getting closer to getting it fixed. 2021-10-11 14:02:04 +01:00
xnoe 65b8e7773e Added initial paging support. 2021-10-11 12:26:11 +01:00
xnoe e9f610d4aa Memory bitmap generated 2021-10-10 20:19:09 +01:00
xnoe 7469925ef4 Added e820 to boot.asm 2021-10-10 17:05:57 +01:00
xnoe 010ea7eb1d Fixed bug with capitalisation 2021-09-25 17:51:18 +01:00
xnoe c235befa43 Completely changed how XnoeOS boots, organised the code somewhat, renamed kernel32 to kernel, now uses the 9 sectors after the boot sector to store a 32 bit stage2 loader. No longer spends unnecessary time in real mode. Updated atapio to properly account for the reserved sector count. 2021-09-25 16:31:19 +01:00
xnoe d617de6a0c Moved some files around in preparation for completely changing the way that booting works 2021-09-23 15:09:06 +01:00
xnoe 2c4c76d1e7 Added filename decoding to strings 2021-09-07 10:46:09 +01:00
xnoe ec314d7b1b We can now read from the disk in protected mode 2021-09-06 21:32:02 +01:00
xnoe b2e2cdb19b Add inw and outw commands in preparation for ATA-PIO support 2021-09-06 17:34:48 +01:00