3f9d6f0311 
								
							 
						 
						
							
							
								
								LibC: add needed stubs to build executables with our compiler  
							
							
							
						 
						
							2023-04-12 17:53:02 +03:00  
				
					
						
							
							
								 
						
							
								8ee63f8264 
								
							 
						 
						
							
							
								
								Kernel: We can create basic userspace processes  
							
							... 
							
							
							
							These are still allocated on the kernel memory 
							
						 
						
							2023-04-12 17:52:36 +03:00  
				
					
						
							
							
								 
						
							
								f924ac9265 
								
							 
						 
						
							
							
								
								Kernel: Threads can now be terminated mid execution  
							
							
							
						 
						
							2023-04-10 21:07:25 +03:00  
				
					
						
							
							
								 
						
							
								3f01f936a1 
								
							 
						 
						
							
							
								
								Kernel: Fix framepointers on started threads  
							
							
							
						 
						
							2023-04-10 21:07:25 +03:00  
				
					
						
							
							
								 
						
							
								25ddc24754 
								
							 
						 
						
							
							
								
								BuildSystem: cmake can now build out libc  
							
							... 
							
							
							
							I can't seem to get libc++ build to work... 
							
						 
						
							2023-04-10 21:07:25 +03:00  
				
					
						
							
							
								 
						
							
								c936aac777 
								
							 
						 
						
							
							
								
								Kernel: Optimize scheduler idling  
							
							... 
							
							
							
							Now after each interrupt we will ask the scheduler to reschedule
if the current thread is the idle thread. This allows semaphore
unblocking to be practically instant when there is only one thread
executing.
Now disk reading is back to ~3 MB/s for single threaded process 
							
						 
						
							2023-04-03 01:51:05 +03:00  
				
					
						
							
							
								 
						
							
								4c5176f751 
								
							 
						 
						
							
							
								
								BuildSystem: We are now using cmake instead of plain make  
							
							... 
							
							
							
							I have been annoyed for a while since I had to build everything
when running the os since the buildsystem was really bad.
I wanted to rewrite the whole build system and changed to using cmake
:) 
							
						 
						
							2023-04-02 04:07:27 +03:00  
				
					
						
							
							
								 
						
							
								8b8e3cbbf0 
								
							 
						 
						
							
							
								
								Kernel/Userspace: Start initial work on userspace and syscalls  
							
							
							
						 
						
							2023-03-13 15:32:46 +02:00  
				
					
						
							
							
								 
						
							
								af854ec9e1 
								
							 
						 
						
							
							
								
								Kernel: Thread creation now takes void(*)() as entry and void* as data  
							
							... 
							
							
							
							This simplifies threading for the future and gets rid of (undefined?)
cast of member function pointer to address 
							
						 
						
							2023-03-09 15:33:42 +02:00  
				
					
						
							
							
								 
						
							
								ed18d86f08 
								
							 
						 
						
							
							
								
								Kernel: Fix spinlock unlocking in x86_64  
							
							... 
							
							
							
							Spinlock unlock used a 64 bit write on 32 bit integer, overwriting
some random memory. This caused some really hard to find bugs 
							
						 
						
							2023-03-08 02:41:44 +02:00  
				
					
						
							
							
								 
						
							
								df8811fc1a 
								
							 
						 
						
							
							
								
								Kernel: Remove "a" from .section .text  
							
							
							
						 
						
							2023-03-07 01:57:09 +02:00  
				
					
						
							
							
								 
						
							
								06db890d49 
								
							 
						 
						
							
							
								
								Kernel: Add ubsan  
							
							... 
							
							
							
							My brain has been melting since I'm getting very random bugs.
I hope I can debug them better with ubsan :) 
							
						 
						
							2023-03-06 23:38:05 +02:00  
				
					
						
							
							
								 
						
							
								1dd61e93b6 
								
							 
						 
						
							
							
								
								Kernel: Threads cannot take arguments anymore  
							
							
							
						 
						
							2023-03-02 01:56:09 +02:00  
				
					
						
							
							
								 
						
							
								7fcbb869e1 
								
							 
						 
						
							
							
								
								Kernel: Initialize GDT in kernel code  
							
							... 
							
							
							
							We dont use the boot GDT only while booting 
							
						 
						
							2023-03-01 21:21:56 +02:00  
				
					
						
							
							
								 
						
							
								7f8cad83b1 
								
							 
						 
						
							
							
								
								Kernel: x86_64 boot script now makes GDT with null, kernel code and data  
							
							
							
						 
						
							2023-03-01 21:21:56 +02:00  
				
					
						
							
							
								 
						
							
								9756de02ef 
								
							 
						 
						
							
							
								
								Kernel: MMU now takes flags when allocating pages  
							
							
							
						 
						
							2023-03-01 21:21:56 +02:00  
				
					
						
							
							
								 
						
							
								80f9428337 
								
							 
						 
						
							
							
								
								Kernel: Fix prefs font for 32 bit  
							
							
							
						 
						
							2023-02-24 03:19:54 +02:00  
				
					
						
							
							
								 
						
							
								c9ea22f5e2 
								
							 
						 
						
							
							
								
								Kernel: IDT now confirms that it allocated succesfully  
							
							
							
						 
						
							2023-02-22 21:48:40 +02:00  
				
					
						
							
							
								 
						
							
								d9c05b7378 
								
							 
						 
						
							
							
								
								Kernel: rewrite the whole kmalloc (again)  
							
							... 
							
							
							
							Performance of the old kmalloc implementation was terrible.
We now use fixed-width linked list allocations for sizes <= 60 bytes.
This is much faster than variable size allocation.
We don't use bitmap scanning anymore since it was probably the slow
part. Instead we use headers that tell allocations size and aligment.
I removed the kmalloc_eternal, even though it was very fast, there is
not really any need for it, since the only place it was used in was IDT.
These changes allowed my psf (font) parsing to go from ~500 ms to ~20 ms.
(coming soon :D) 
							
						 
						
							2023-02-22 16:32:50 +02:00  
				
					
						
							
							
								 
						
							
								1bd8b0fe5c 
								
							 
						 
						
							
							
								
								Kernel: Sleep now actually sleeps and allows idling  
							
							
							
						 
						
							2023-02-19 18:52:25 +02:00  
				
					
						
							
							
								 
						
							
								6fab26692b 
								
							 
						 
						
							
							
								
								Kernel: remove unnecessary function from x86_64 Thread.S  
							
							
							
						 
						
							2023-02-02 23:48:18 +02:00  
				
					
						
							
							
								 
						
							
								5b5e620d8a 
								
							 
						 
						
							
							
								
								Kernel: Improve multithreading support  
							
							... 
							
							
							
							We can now use arbitary BAN::function<void(...)> as the Thread.
I also implemented multithreading for i386 since it was not done
on the initial multithreading commit. 
							
						 
						
							2023-02-02 23:24:12 +02:00  
				
					
						
							
							
								 
						
							
								9b8de5025a 
								
							 
						 
						
							
							
								
								All: rename every function from UpperCamelCase to snake_case  
							
							... 
							
							
							
							This was a mess since I didn't know which to use but now I decided
to go with snake_case :) 
							
						 
						
							2023-02-01 21:05:44 +02:00  
				
					
						
							
							
								 
						
							
								337569b0ca 
								
							 
						 
						
							
							
								
								Kernel: Implement basic SpinLock  
							
							
							
						 
						
							2023-02-01 01:52:52 +02:00  
				
					
						
							
							
								 
						
							
								cb3b62d665 
								
							 
						 
						
							
							
								
								Kernel: Only allocate single GDT entry during boot.S  
							
							... 
							
							
							
							When we need more, we should probably initialize rest of them
in cpp code 
							
						 
						
							2023-01-31 18:43:09 +02:00  
				
					
						
							
							
								 
						
							
								1687028ed5 
								
							 
						 
						
							
							
								
								Kernel: Add constructor and destructor to MMU  
							
							
							
						 
						
							2023-01-30 18:54:04 +02:00  
				
					
						
							
							
								 
						
							
								6dc22b7251 
								
							 
						 
						
							
							
								
								Kernel: Add actual register values to x86_64 kernel panic  
							
							... 
							
							
							
							Very hackish implementation, but we now get actual registers at the
time of the interrupt happening 
							
						 
						
							2023-01-30 18:52:38 +02:00  
				
					
						
							
							
								 
						
							
								6418d7cfc3 
								
							 
						 
						
							
							
								
								Kernel: Add Other GDT entries to x86_64  
							
							
							
						 
						
							2023-01-26 12:53:04 +02:00  
				
					
						
							
							
								 
						
							
								35d2e27292 
								
							 
						 
						
							
							
								
								Kernel: Improve MMU  
							
							... 
							
							
							
							We don't have to invalidate page in AllocatePage() if we don't make
any changes. We also should not assert on deallocating non-present
pages, just return early :) 
							
						 
						
							2023-01-26 02:57:14 +02:00  
				
					
						
							
							
								 
						
							
								589f338357 
								
							 
						 
						
							
							
								
								Kernel: Cleanup IDT register dump inline assembly  
							
							
							
						 
						
							2023-01-26 02:57:14 +02:00  
				
					
						
							
							
								 
						
							
								e87026f01d 
								
							 
						 
						
							
							
								
								Kernel: I have no idea what this commit does  
							
							... 
							
							
							
							I had committed a change in IDT but reverted it now.
This propably only adds a spurious interrupt detection to common cpp
interrupt handler? 
							
						 
						
							2023-01-26 02:55:37 +02:00  
				
					
						
							
							
								 
						
							
								b315fdc27f 
								
							 
						 
						
							
							
								
								Kernel: Finally managed to get 64-bit working  
							
							... 
							
							
							
							I had weird problems with interrupts but everything should work now 
							
						 
						
							2023-01-25 19:19:28 +02:00