4a92f44cf6 
								
							 
						 
						
							
							
								
								Kernel: Implement new abstract MemoryRegion  
							
							... 
							
							
							
							MemoryBackedRegion now inherits from this and is used for private
anonymous mappigs. This will make shared mappings and file backed
mappings much easier to implement. 
							
						 
						
							2023-09-29 16:18:23 +03:00  
				
					
						
							
							
								 
						
							
								376b9f7272 
								
							 
						 
						
							
							
								
								LibC: mmap returns MAP_FAILED instead of NULL  
							
							
							
						 
						
							2023-09-29 10:38:08 +03:00  
				
					
						
							
							
								 
						
							
								7e9e4c47ae 
								
							 
						 
						
							
							
								
								LibELF: Optimize LoadableELF::clone() memory usage  
							
							... 
							
							
							
							We only clone mapped pages that have been marked as writeble.
Read/execute only pages will be exactly as in the file itself and
can be demand paged also :D 
							
						 
						
							2023-09-29 02:05:12 +03:00  
				
					
						
							
							
								 
						
							
								603fc200e6 
								
							 
						 
						
							
							
								
								Kernel: Add some sanity assertions/functions  
							
							
							
						 
						
							2023-09-29 02:03:19 +03:00  
				
					
						
							
							
								 
						
							
								c11e84b248 
								
							 
						 
						
							
							
								
								Kernel: Use the new on demand ELF structure  
							
							... 
							
							
							
							All executable files are now read from disk and paged on demand.
This was a big rewrite of the old ELF library but in the end
everything seems much cleaner, since all the old functionality was
not actually needed for execution.
I have to do some measurements, but I feel like memory usage dropped
quite a bit after this change. 
							
						 
						
							2023-09-29 02:00:10 +03:00  
				
					
						
							
							
								 
						
							
								be13120554 
								
							 
						 
						
							
							
								
								LibELF: Implement new ELF structure  
							
							... 
							
							
							
							This structure is used for demand pagable execution. It handles all
memory allocation and file reading. 
							
						 
						
							2023-09-29 01:58:03 +03:00  
				
					
						
							
							
								 
						
							
								9943edad5a 
								
							 
						 
						
							
							
								
								LibELF: Add types for native executable  
							
							
							
						 
						
							2023-09-29 01:56:57 +03:00  
				
					
						
							
							
								 
						
							
								f4049be975 
								
							 
						 
						
							
							
								
								Kernel: Fix off by one error when calculating pages in range  
							
							
							
						 
						
							2023-09-29 01:56:15 +03:00  
				
					
						
							
							
								 
						
							
								6cf7e01fe9 
								
							 
						 
						
							
							
								
								Kernel: Don't map interrupt stack as userspace accessable  
							
							
							
						 
						
							2023-09-28 21:58:24 +03:00  
				
					
						
							
							
								 
						
							
								b51d2f5295 
								
							 
						 
						
							
							
								
								Kernel: mmap regions are now demand paged  
							
							... 
							
							
							
							mmap will not actually take any memory unless you use the given
memory. 
							
						 
						
							2023-09-28 21:07:14 +03:00  
				
					
						
							
							
								 
						
							
								49d941ad65 
								
							 
						 
						
							
							
								
								LibC: Fix a bug in malloc  
							
							... 
							
							
							
							You could not allocate with size equal to one of the pool sizes. 
							
						 
						
							2023-09-28 21:05:27 +03:00  
				
					
						
							
							
								 
						
							
								a66c3bdae5 
								
							 
						 
						
							
							
								
								Kernel: Remove duplicate code in VirtualRange::create_to_vaddr_range  
							
							
							
						 
						
							2023-09-28 13:59:49 +03:00  
				
					
						
							
							
								 
						
							
								547eabb403 
								
							 
						 
						
							
							
								
								Kernel: Reboot will now always succeed  
							
							... 
							
							
							
							If acpi reset fails, we forcefully trigger a triple fault to restart
the system. 
							
						 
						
							2023-09-28 13:53:03 +03:00  
				
					
						
							
							
								 
						
							
								79851394b3 
								
							 
						 
						
							
							
								
								Kernel/LibC/Userspace: Add SYS_POWEROFF + cli tool  
							
							... 
							
							
							
							You can now shutdown/reboot banan-os with the poweroff cli tool.
Reboot doesn't seem to work on qemu. 
							
						 
						
							2023-09-28 12:36:47 +03:00  
				
					
						
							
							
								 
						
							
								fcdc922343 
								
							 
						 
						
							
							
								
								Kernel: Enter ACPI mode with lai  
							
							
							
						 
						
							2023-09-28 12:30:27 +03:00  
				
					
						
							
							
								 
						
							
								0b11d76576 
								
							 
						 
						
							
							
								
								LibC: Add errno for unknown error  
							
							
							
						 
						
							2023-09-28 12:06:17 +03:00  
				
					
						
							
							
								 
						
							
								f7097398ca 
								
							 
						 
						
							
							
								
								Kernel: Make tty overload correct has_data() function  
							
							... 
							
							
							
							This allows snake game to work again :) 
							
						 
						
							2023-09-28 11:54:12 +03:00  
				
					
						
							
							
								 
						
							
								85b1252b9e 
								
							 
						 
						
							
							
								
								Userspace: Use printf length modifiers when printing  
							
							
							
						 
						
							2023-09-28 11:49:31 +03:00  
				
					
						
							
							
								 
						
							
								1cd12b5f16 
								
							 
						 
						
							
							
								
								LibC: Implement length modifiers to printf  
							
							
							
						 
						
							2023-09-28 11:42:57 +03:00  
				
					
						
							
							
								 
						
							
								c84b66d078 
								
							 
						 
						
							
							
								
								Shell: String leading and trailing whitespace from commands  
							
							... 
							
							
							
							This fixes a bug of inserting empty argument if command had trailing
whitespace 
							
						 
						
							2023-09-28 10:28:49 +03:00  
				
					
						
							
							
								 
						
							
								27adb9486b 
								
							 
						 
						
							
							
								
								BAN: Update Endiannes API  
							
							... 
							
							
							
							Add functions to swap endiannes or convert host to big/little endian
This code should be very compiler friendly and should be optimized to
single bswap instruction on x86. 
							
						 
						
							2023-09-28 01:22:14 +03:00  
				
					
						
							
							
								 
						
							
								8d5369fafe 
								
							 
						 
						
							
							
								
								Kernel: Add some functionality to disable TTY input/output  
							
							... 
							
							
							
							Userspace programs can call tty_ctrl() to disable/enable tty from
handling input and displaying output.
This API is probably going to change in the future to ioctl calls
but I'm not sure how ioctl is used and what functionality should it
have. I decided to create whole new function and syscall for now.
Next I will expose framebuffer in /dev/fb0 and then I can start work
on graphical environment! :D 
							
						 
						
							2023-09-27 15:44:05 +03:00  
				
					
						
							
							
								 
						
							
								feafc57b63 
								
							 
						 
						
							
							
								
								Kernel: Disable DiskCache sync messages  
							
							
							
						 
						
							2023-09-27 14:12:21 +03:00  
				
					
						
							
							
								 
						
							
								f9b347f9d9 
								
							 
						 
						
							
							
								
								BuildSystem: Rework calling qemu  
							
							... 
							
							
							
							I change always manually the serial/graphical. When running cmake
you can define variable QEMU_ACCEL that will be used as accelerator.
Also ninja has the following targets for running qemu
  1. qemu:            Run graphical qemu environment
  2. qemu-nographic:  Run qemu without graphical screen. You should
                      select 'serial only' from grub menu.
  3. qemu-debug:      Run qemu without accelerator and interrupt
                      debugger. 
							
						 
						
							2023-09-27 13:49:01 +03:00  
				
					
						
							
							
								 
						
							
								6e1825d6b4 
								
							 
						 
						
							
							
								
								Kernel: Add missing TRY() to font loading  
							
							
							
						 
						
							2023-09-27 00:49:53 +03:00  
				
					
						
							
							
								 
						
							
								ec2baeb276 
								
							 
						 
						
							
							
								
								Sync: Add some argument parsing to sync(1)  
							
							... 
							
							
							
							You can specify --block to make the program wait until sync is
complete. 
							
						 
						
							2023-09-27 00:37:23 +03:00  
				
					
						
							
							
								 
						
							
								6cb8bda6e1 
								
							 
						 
						
							
							
								
								LibC: add syncsync() to unistd.h  
							
							... 
							
							
							
							This is my own WELL NAMED (:D) function that takes a paramemeter
to make the sync operation synchronous. 
							
						 
						
							2023-09-27 00:35:36 +03:00  
				
					
						
							
							
								 
						
							
								05e57801e7 
								
							 
						 
						
							
							
								
								Kernel: SYS_SYNC now schedules sync to happen soon  
							
							... 
							
							
							
							You can pass non-zero argument to the syscall to block until the
sync has finished. 
							
						 
						
							2023-09-27 00:34:00 +03:00  
				
					
						
							
							
								 
						
							
								b924c85669 
								
							 
						 
						
							
							
								
								Kernel: DiskCache now requires sync to be called from kernel thread  
							
							... 
							
							
							
							This disables the scenario where user interrupts sync operation
possibly leaving the syncing in invalid state. 
							
						 
						
							2023-09-27 00:32:13 +03:00  
				
					
						
							
							
								 
						
							
								09c1aa44d8 
								
							 
						 
						
							
							
								
								Kernel: Allow creationg of empty processes and manual registration  
							
							... 
							
							
							
							You can now create kernel processes without any threads, add the
needed threads and only then register the process and its threads
to the scheduler. 
							
						 
						
							2023-09-27 00:29:45 +03:00  
				
					
						
							
							
								 
						
							
								1d470fb5ba 
								
							 
						 
						
							
							
								
								Kernel: All syscalls now validate users pointers  
							
							... 
							
							
							
							We now validate pointers passed by the user, to forbid arbitary
memory read/write. Now the user is only allowed to pass in pointers
in their own mapped memory space (or null). 
							
						 
						
							2023-09-25 22:07:12 +03:00  
				
					
						
							
							
								 
						
							
								b4e4f7a6cc 
								
							 
						 
						
							
							
								
								Kernel: Print more detailed output on ISR  
							
							
							
						 
						
							2023-09-25 20:33:07 +03:00  
				
					
						
							
							
								 
						
							
								55d30a7cc3 
								
							 
						 
						
							
							
								
								Kernel: Ext2 inodes are now stored in cache  
							
							... 
							
							
							
							This allows faster inode access and ensures working inodes when
opened in multiple places. 
							
						 
						
							2023-09-25 20:31:40 +03:00  
				
					
						
							
							
								 
						
							
								b62186441b 
								
							 
						 
						
							
							
								
								BAN: Implement basic WeakPtr  
							
							... 
							
							
							
							This can be constructed from classes that inherit from Weakable 
							
						 
						
							2023-09-25 19:43:10 +03:00  
				
					
						
							
							
								 
						
							
								8caba1e774 
								
							 
						 
						
							
							
								
								Kernel: Ext2 filesystem now holds 10 preallocated block buffers  
							
							... 
							
							
							
							Inodes can query blocks from this buffer. This allows allocation of
blocks to not fail during normal operations. Also less stress on
kmalloc. 
							
						 
						
							2023-09-25 14:32:25 +03:00  
				
					
						
							
							
								 
						
							
								7bdb428938 
								
							 
						 
						
							
							
								
								Kernel: Fix ext2 block allocation  
							
							... 
							
							
							
							Redo ext2 block allocation. This is now much "cleaner" although
I'm not too fond of the macros. 
							
						 
						
							2023-09-25 13:17:44 +03:00  
				
					
						
							
							
								 
						
							
								3ea707c0e7 
								
							 
						 
						
							
							
								
								BuildSystem: Optimize image creation  
							
							... 
							
							
							
							We now use truncate to create disk image, since it doesn't require
writing zeroes to full disk. I also removed creation of third
partition as this was not currently used. 
							
						 
						
							2023-09-25 13:15:55 +03:00  
				
					
						
							
							
								 
						
							
								18d582c6ce 
								
							 
						 
						
							
							
								
								Kernel: Hacky kmalloc quick fix  
							
							... 
							
							
							
							Remove GeneralAllocator from kmalloc as it is not CriticalScope safe.
This requires increasing kmalloc memory. 
							
						 
						
							2023-09-25 13:13:57 +03:00  
				
					
						
							
							
								 
						
							
								8b2bb95b81 
								
							 
						 
						
							
							
								
								Kernel: VirtualRange doesn't store physical addresses of pages  
							
							... 
							
							
							
							This was unnecessarry allocation, since the page table allready
contains virtual address -> physical address mappings. 
							
						 
						
							2023-09-24 01:29:34 +03:00  
				
					
						
							
							
								 
						
							
								2ef496a24a 
								
							 
						 
						
							
							
								
								Kernel: all mapped ranges are now stored in one container  
							
							... 
							
							
							
							We just now have a flag if a mapping is unmappable 
							
						 
						
							2023-09-23 23:45:26 +03:00  
				
					
						
							
							
								 
						
							
								c0a89e8951 
								
							 
						 
						
							
							
								
								Kernel: Fully remove sys_alloc and sys_free  
							
							... 
							
							
							
							I could delete the whole FixedWidthAllocator as it was now obsolete.
GeneralAllocator is still used by kmalloc. Kmalloc cannot actually
use it since, GeneralAllocator depends on SpinLock and kmalloc runs
without interrupts. 
							
						 
						
							2023-09-23 03:53:30 +03:00  
				
					
						
							
							
								 
						
							
								fc953df281 
								
							 
						 
						
							
							
								
								Kernel/LibC: remove PATH resoltion from kernel  
							
							... 
							
							
							
							I have no idea why I had made PATH environment variable parsing
to be part of the kernel. Now the shell does the parsing and
environment syscall is no longer needed. 
							
						 
						
							2023-09-23 03:08:14 +03:00  
				
					
						
							
							
								 
						
							
								fe2dca16f0 
								
							 
						 
						
							
							
								
								Kernel/LibC: add flag to enable/disable sse support  
							
							... 
							
							
							
							SSE support is very experimental and causes GP. I decided to make
SSE not default until I get to fixing it :) 
							
						 
						
							2023-09-23 02:28:25 +03:00  
				
					
						
							
							
								 
						
							
								f662aa6da2 
								
							 
						 
						
							
							
								
								Kernel/LibC: userspace malloc now uses mmap to get memory  
							
							... 
							
							
							
							We could remove syscalls to allocate more memory. This was not
something the kernel should have done. 
							
						 
						
							2023-09-23 02:26:23 +03:00  
				
					
						
							
							
								 
						
							
								fee3677fb9 
								
							 
						 
						
							
							
								
								Kernel/LibC: add mmap for private anonymous mappings  
							
							... 
							
							
							
							This will be used by the userspace to get more memory. Currently
kernel handles all allocations, which is not preferable. 
							
						 
						
							2023-09-22 23:01:14 +03:00  
				
					
						
							
							
								 
						
							
								4818c6e3dd 
								
							 
						 
						
							
							
								
								BuildSystem: Add cmake target for debugging qemu  
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
				
					
						
							
							
								 
						
							
								971eb737c1 
								
							 
						 
						
							
							
								
								BAN: Fix LinkedList::pop_back()  
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
				
					
						
							
							
								 
						
							
								9a3286ad57 
								
							 
						 
						
							
							
								
								Kernel: Add constexpr conditional debug prints  
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
				
					
						
							
							
								 
						
							
								c9e09b840e 
								
							 
						 
						
							
							
								
								Kernel: Add LAI as a dependency  
							
							... 
							
							
							
							I did not feel like implementing AML interpreter now, and wanted
everything AML has to offer. I will be writing my own AML interperter
at some point. 
							
						 
						
							2023-09-22 17:20:35 +03:00  
				
					
						
							
							
								 
						
							
								8136248a67 
								
							 
						 
						
							
							
								
								Kernel: Fix timer includes  
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00