Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								603fc200e6 
								
							 
						 
						
							
							
								
								Kernel: Add some sanity assertions/functions  
							
							 
							
							
							
						 
						
							2023-09-29 02:03:19 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								f4049be975 
								
							 
						 
						
							
							
								
								Kernel: Fix off by one error when calculating pages in range  
							
							 
							
							
							
						 
						
							2023-09-29 01:56:15 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								fcdc922343 
								
							 
						 
						
							
							
								
								Kernel: Enter ACPI mode with lai  
							
							 
							
							
							
						 
						
							2023-09-28 12:30:27 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								f7097398ca 
								
							 
						 
						
							
							
								
								Kernel: Make tty overload correct has_data() function  
							
							 
							
							... 
							
							
							
							This allows snake game to work again :) 
							
						 
						
							2023-09-28 11:54:12 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								9a3286ad57 
								
							 
						 
						
							
							
								
								Kernel: Add constexpr conditional debug prints  
							
							 
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								8136248a67 
								
							 
						 
						
							
							
								
								Kernel: Fix timer includes  
							
							 
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								0d67e46041 
								
							 
						 
						
							
							
								
								Kernel: Add config read/write api to PCI  
							
							 
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								bc1087f5a7 
								
							 
						 
						
							
							
								
								Kernel: Add pointer validation API to page table  
							
							 
							
							
							
						 
						
							2023-09-22 17:20:35 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								7774f56ab6 
								
							 
						 
						
							
							
								
								Kernel: PCI devices can now create region for BAR  
							
							 
							
							... 
							
							
							
							This creates either MEM or IO region for read/write access to PCI
device. 
							
						 
						
							2023-09-22 17:20:35 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								14a608effd 
								
							 
						 
						
							
							
								
								1000th COMMIT: Kernel: Add basic E1000 driver  
							
							 
							
							... 
							
							
							
							This driver is only capable to read mac address and enable and read
link status 
							
						 
						
							2023-09-22 17:20:28 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								5fae3cec2a 
								
							 
						 
						
							
							
								
								Kernel: Implement SYS_SYNC and add sync executable to userspace  
							
							 
							
							... 
							
							
							
							You can (and have to) manually sync disk after writes to it. 
							
						 
						
							2023-09-11 01:26:27 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								b0c22b61ec 
								
							 
						 
						
							
							
								
								Kernel: Writes to disk are not synchronous anymore  
							
							 
							
							... 
							
							
							
							Implement "proper" DiskCache syncing 
							
						 
						
							2023-09-11 01:25:16 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								202c38a65a 
								
							 
						 
						
							
							
								
								Kernel: Improve open() POSIX compatability  
							
							 
							
							... 
							
							
							
							Also rename Process::sys_creat -> create_file since it is not
actually a syscall and only used by open as a healper. 
							
						 
						
							2023-09-10 00:31:42 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								720bc418a6 
								
							 
						 
						
							
							
								
								All: Clear lines with only whitspace in them  
							
							 
							
							
							
						 
						
							2023-09-10 00:31:42 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								d77f455065 
								
							 
						 
						
							
							
								
								Kernel: Add basic ZeroDevice to /dev/zero  
							
							 
							
							
							
						 
						
							2023-09-10 00:31:42 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								7e08f0fb66 
								
							 
						 
						
							
							
								
								Kernel: Start work on making inodes more thread safe  
							
							 
							
							... 
							
							
							
							All inode operations are now locked and thread blocked 
							
						 
						
							2023-09-10 00:31:42 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								9e4a87021c 
								
							 
						 
						
							
							
								
								Kernel: Fix directory permissions  
							
							 
							
							... 
							
							
							
							We did not care about X bit in directories and instead used only the
R bit for search/read. 
							
						 
						
							2023-09-08 11:46:53 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								c1fd341698 
								
							 
						 
						
							
							
								
								Kernel: TTY now reads input byte by byte  
							
							 
							
							... 
							
							
							
							This allows correct behaviour for character streams / keyboard
handling. Serial input can now send working ^C :D 
							
						 
						
							2023-09-07 15:06:27 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								ddd36af0f1 
								
							 
						 
						
							
							
								
								Kernel: Add /dev/tty symlink that targets the current tty  
							
							 
							
							
							
						 
						
							2023-09-05 01:07:52 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								35fd30ee29 
								
							 
						 
						
							
							
								
								Kernel: Implement basic RamSymlinkInode  
							
							 
							
							
							
						 
						
							2023-09-05 01:07:52 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								4a0652684c 
								
							 
						 
						
							
							
								
								Kernel: You can now read serial output from the /dev/ttyS*  
							
							 
							
							
							
						 
						
							2023-09-05 01:07:52 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								33c81f00b7 
								
							 
						 
						
							
							
								
								Kernel: Receive interrupts for COM1 and COM2 input  
							
							 
							
							... 
							
							
							
							The input has to still be attached to terminal 
							
						 
						
							2023-09-04 22:07:40 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								55714b90cd 
								
							 
						 
						
							
							
								
								Kernel: Rework whole Terminal structure  
							
							 
							
							... 
							
							
							
							Serial monitors can now be used as a output. This requires editing
init code for the stdio opening. Serial input is not supported, so qemu
still needs graphical window for ps/2 keyboard. 
							
						 
						
							2023-09-04 19:34:18 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								9b47603a1d 
								
							 
						 
						
							
							
								
								Kernel: Make serial devices to their own class  
							
							 
							
							
							
						 
						
							2023-09-04 14:57:05 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								42b85dc33b 
								
							 
						 
						
							
							
								
								Kernel: Add ANSI support for hiding/showing cursor to TTY  
							
							 
							
							
							
						 
						
							2023-09-04 14:30:09 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								044378cfa3 
								
							 
						 
						
							
							
								
								Kernel: Add basic nanosleep, only millisecond percision  
							
							 
							
							
							
						 
						
							2023-09-04 12:59:50 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								f1d4d5f995 
								
							 
						 
						
							
							
								
								Kernel: Add basic support for O_NONBLOCK (only for tty)  
							
							 
							
							
							
						 
						
							2023-09-04 12:57:52 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								19d0fb6fcd 
								
							 
						 
						
							
							
								
								Kernel: add basic fcntl() with couple of commands and no validation  
							
							 
							
							
							
						 
						
							2023-09-04 12:57:09 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								7933265095 
								
							 
						 
						
							
							
								
								Kernel: Split ext2 implementation to multiple files  
							
							 
							
							
							
						 
						
							2023-09-01 15:10:23 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								d810644018 
								
							 
						 
						
							
							
								
								Kernel: Start work on writable ext2 filesystem  
							
							 
							
							
							
						 
						
							2023-08-31 23:40:31 +03:00  
						
					 
				
					
						
							
							
								 
								Bananymous
							
						 
						
							 
							
							
							
							
								
							
							
								a7bfc1c2ec 
								
							 
						 
						
							
							
								
								Kernel: Add missing ififo() to Inode::Mode  
							
							 
							
							
							
						 
						
							2023-08-31 21:38:31 +03:00