Bananymous 
							
						 
						
							
								615d9d4abe 
								
							 
						 
						
							
							
								
								LibC: Add INADDR_LOOPBACK  
							
							... 
							
							
							
							Some port was using this. Loopback addresses are not supported, but they
will be 127.0.0.1. 
							
						 
						
							2024-08-05 00:56:42 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								aa03274093 
								
							 
						 
						
							
							
								
								LibC: Remove O_DIRECTORY from opendir()  
							
							... 
							
							
							
							opendir() did not work on symlinks after with this flag... 
							
						 
						
							2024-08-05 00:55:03 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								e7a06979ec 
								
							 
						 
						
							
							
								
								LibC: Implement usleep()  
							
							... 
							
							
							
							This is not a POSIX function, but some ports seem to be using it either
way 
							
						 
						
							2024-08-05 00:54:17 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								3651306f57 
								
							 
						 
						
							
							
								
								LibC: Implement strto{u,i}max()  
							
							
							
						 
						
							2024-08-05 00:53:27 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								5dce4e6aea 
								
							 
						 
						
							
							
								
								LibC: Implement strftime()  
							
							... 
							
							
							
							I did not test this at all, this might very well be broken 
							
						 
						
							2024-08-05 00:49:44 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								1d9041f2aa 
								
							 
						 
						
							
							
								
								LibC: make opendir() fail if path is not a directory  
							
							
							
						 
						
							2024-08-01 22:57:46 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								a578527012 
								
							 
						 
						
							
							
								
								Kernel/LibC: Implement ioctl(TIOCGWINSZ)  
							
							... 
							
							
							
							This allows ncurses to get the window size! 
							
						 
						
							2024-08-01 22:56:26 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								af78a2d080 
								
							 
						 
						
							
							
								
								Kernel: Implement ANSI CSI L for TTY  
							
							... 
							
							
							
							vim seems to be using this, so I decided its needed 
							
						 
						
							2024-08-01 22:08:46 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								840000d02b 
								
							 
						 
						
							
							
								
								Kernel: Make sure null signal is not send with kill()  
							
							
							
						 
						
							2024-08-01 21:41:54 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								9ea4c777ad 
								
							 
						 
						
							
							
								
								Kernel: TTY now handles ESC key presses  
							
							... 
							
							
							
							This allows exiting vim :D 
							
						 
						
							2024-08-01 21:41:11 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								a33b63d066 
								
							 
						 
						
							
							
								
								Kernel/LibC: Implement alarm() and setitimer()  
							
							... 
							
							
							
							This makes vim able to start! 
							
						 
						
							2024-08-01 21:09:56 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								da3b30cd94 
								
							 
						 
						
							
							
								
								Kernel: Add macro to dump all syscalls and their return values  
							
							
							
						 
						
							2024-08-01 18:21:49 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								4599e1dec5 
								
							 
						 
						
							
							
								
								Kernel: Make schedler not crash when unblocking active thread  
							
							... 
							
							
							
							This was happening when sending signals to processes that were currently
running. 
							
						 
						
							2024-08-01 18:21:49 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								6de350ce9d 
								
							 
						 
						
							
							
								
								Kernel/LibC: Cleanup, fix and implement a lot of signal code  
							
							... 
							
							
							
							This patch implements sigsets and some of their usages 
							
						 
						
							2024-08-01 17:01:18 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								838d31fa41 
								
							 
						 
						
							
							
								
								Kernel: Implement more POSIX compliant open() and openat() syscalls  
							
							
							
						 
						
							2024-08-01 15:35:02 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								401b460d75 
								
							 
						 
						
							
							
								
								LibC: Implement setbuf() and setvbuf()  
							
							
							
						 
						
							2024-08-01 01:30:00 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								c440204fa5 
								
							 
						 
						
							
							
								
								LibC: Implement dummy strcoll()  
							
							
							
						 
						
							2024-07-31 23:58:10 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								adf50dffd8 
								
							 
						 
						
							
							
								
								LibC: Implement uname()  
							
							
							
						 
						
							2024-07-31 23:54:26 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								20d38ed28c 
								
							 
						 
						
							
							
								
								LibC/Shell: Implement gethostname() and shell uses it for hostname  
							
							
							
						 
						
							2024-07-31 23:53:55 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								edc30cd71d 
								
							 
						 
						
							
							
								
								LibC: Compile without exceptions  
							
							... 
							
							
							
							This allows libc to not require __gxx_personality_v0. I can maybe add
C++ back to libc... :D I don't know why I did not research earlier what
this symbols was used for 
							
						 
						
							2024-07-31 23:33:41 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								10ce03a1e7 
								
							 
						 
						
							
							
								
								LibC: Implement ctime() and asctime()  
							
							
							
						 
						
							2024-07-31 23:26:10 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								5fca5c774a 
								
							 
						 
						
							
							
								
								LibC: Implement umask()  
							
							
							
						 
						
							2024-07-31 23:26:10 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								fc6c39e670 
								
							 
						 
						
							
							
								
								LibC: Implement gettimeofday()  
							
							
							
						 
						
							2024-07-31 23:26:06 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								7c3b6307d9 
								
							 
						 
						
							
							
								
								Kernel: Cleanup USB initialization code  
							
							
							
						 
						
							2024-07-31 23:23:44 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								e52dac3b25 
								
							 
						 
						
							
							
								
								LibC: Implement tmpnam()  
							
							... 
							
							
							
							This implementation is not really spec compliant as rand() does not
guarantee TMP_MAX different outputs + seeding 
							
						 
						
							2024-07-30 12:02:30 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								62db9a8ef3 
								
							 
						 
						
							
							
								
								LibC: Implement C++ static guards  
							
							
							
						 
						
							2024-07-30 12:02:05 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								f0be4f86a6 
								
							 
						 
						
							
							
								
								LibC/Kernel: Implement access  
							
							
							
						 
						
							2024-07-30 11:51:07 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								e5bb843059 
								
							 
						 
						
							
							
								
								LibC/Kernel: Implement ttyname  
							
							
							
						 
						
							2024-07-30 11:41:18 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								ca774dfeb5 
								
							 
						 
						
							
							
								
								LibC: Implement setlocale() for C locale  
							
							
							
						 
						
							2024-07-30 11:33:02 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								681d8327f5 
								
							 
						 
						
							
							
								
								LibC/Kernel: Cleanup termios code  
							
							... 
							
							
							
							This is still not correct, but much better than it used to be 
							
						 
						
							2024-07-30 11:10:43 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								9bc02c81f8 
								
							 
						 
						
							
							
								
								Kernel: Map DMA and PCI MMIO as uncached  
							
							
							
						 
						
							2024-07-30 11:10:08 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								bb1738db8c 
								
							 
						 
						
							
							
								
								Kernel: Make thread unblocking O(1)  
							
							... 
							
							
							
							This is still bit broken. VirtualBox seems to freeze sometimes, but I
could not recreate this on qemu (with and without kvm) or real hardware. 
							
						 
						
							2024-07-24 00:31:01 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								9548c592a3 
								
							 
						 
						
							
							
								
								Kernel: Always print basic info about xHCI controller  
							
							... 
							
							
							
							Its nice to see that the controller is getting initalized 
							
						 
						
							2024-07-23 09:09:08 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								cda0276d39 
								
							 
						 
						
							
							
								
								Kernel: Force PCI irq line usage when not using APIC  
							
							... 
							
							
							
							afaik PIC does not support MSI 
							
						 
						
							2024-07-23 09:08:00 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								539afb329a 
								
							 
						 
						
							
							
								
								Kernel: All processors use LAPIC timer when running with APIC  
							
							... 
							
							
							
							This makes scheduler preemption much cleaner as bsb does not have to
send smp messages to notify other processes about timer interrupt.
Also PIT percision is now "full" 0.8 us instead of 1 ms that I was using
before. 
							
						 
						
							2024-07-23 02:28:52 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								3e0150f847 
								
							 
						 
						
							
							
								
								Kernel: Pressing F1 now toggles rendering of CPU loads to the terminal  
							
							... 
							
							
							
							This can be nice for seeing the performance and problems on the load
balancing algorithm. 
							
						 
						
							2024-07-22 00:43:13 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								f8261c60c0 
								
							 
						 
						
							
							
								
								Kernel: Rewrite the whole scheduler and re-architecture SMP handling  
							
							... 
							
							
							
							Change Semaphore -> ThreadBlocker
  This was not a semaphore, I just named it one because I didn't know
  what semaphore was. I have meant to change this sooner, but it was in
  no way urgent :D
Implement SMP events. Processors can now be sent SMP events through
IPIs. SMP events can be sent either to a single processor or broadcasted
to every processor.
PageTable::{map_page,map_range,unmap_page,unmap_range}() now send SMP
event to invalidate TLB caches for the changed pages.
Scheduler no longer uses a global run queue. Each processor has its own
scheduler that keeps track of the load on the processor. Once every
second schedulers do load balancing. Schedulers have no access to other
processors' schedulers, they just see approximate loads. If scheduler
decides that it has too much load, it will send a thread to another
processor through a SMP event.
Schedulers are currently run using the timer interrupt on BSB. This
should be not the case, and each processor should use its LAPIC timer
for interrupts. There is no reason to broadcast SMP event to all
processors when BSB gets timer interrupt.
Old scheduler only achieved 20% idle load on qemu. That was probably a
very inefficient implementation. This new scheduler seems to average
around 1% idle load. This is much closer to what I would expect. On my
own laptop idle load seems to be only around 0.5% on each processor. 
							
						 
						
							2024-07-22 00:33:50 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								9f90eeab05 
								
							 
						 
						
							
							
								
								Kernel: Fix stack pointer OOB check  
							
							... 
							
							
							
							i686 does not push the stack pointer on interrupt when no CPL change
happens. 
							
						 
						
							2024-07-22 00:27:08 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								1ee37cb671 
								
							 
						 
						
							
							
								
								Kernel: Make sure stack is aligned on interrupts for i686 target  
							
							... 
							
							
							
							I just realized that only x86_64 aligns stack pointer when interrupt is
triggered. 
							
						 
						
							2024-07-22 00:10:42 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								8fe798de6d 
								
							 
						 
						
							
							
								
								Kernel: Make PIT counter atomic with spinlock  
							
							
							
						 
						
							2024-07-21 18:56:41 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								e00efca170 
								
							 
						 
						
							
							
								
								Userspace: Pprogram template and loadfont mark install as optional  
							
							
							
						 
						
							2024-07-21 17:41:40 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								86b6714777 
								
							 
						 
						
							
							
								
								Kernel: Add command line option to boot without smp  
							
							
							
						 
						
							2024-07-21 17:40:57 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								77b5e6d44a 
								
							 
						 
						
							
							
								
								Kernel: Make ATABus use BAN::Atomic<> instead of gcc builtin atomics  
							
							
							
						 
						
							2024-07-21 17:39:26 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								ffe73165f9 
								
							 
						 
						
							
							
								
								Kernel: Fix PCI typo serail -> serial  
							
							
							
						 
						
							2024-07-21 17:36:29 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								96c7e9e29d 
								
							 
						 
						
							
							
								
								Kernel: Cleanup VirtualRange code  
							
							... 
							
							
							
							Virtual range does not need to look into the page table for mapped
physcial pages. It can (and should) just keep track of them itself. 
							
						 
						
							2024-07-21 17:35:07 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								02051ed60f 
								
							 
						 
						
							
							
								
								Kernel: Move keyboard kernel panic to the general input device  
							
							... 
							
							
							
							This will allow command to work without requiring it per keyboard driver 
							
						 
						
							2024-07-21 17:33:38 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								f49689caac 
								
							 
						 
						
							
							
								
								Kernel: Implement API for sending IPIs for only one processor  
							
							... 
							
							
							
							Also move the spin wait to check for pending IPI sends to the start of
ipi sending function. There is no need to wait for IPI send succeeding
right after it. It is enough to make sure there are not multiple IPIs
being sent at the same time. 
							
						 
						
							2024-07-21 17:30:59 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								819c130366 
								
							 
						 
						
							
							
								
								BAN: If format string is started with space, numbers are padded with it  
							
							
							
						 
						
							2024-07-19 21:39:31 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								974b9b992d 
								
							 
						 
						
							
							
								
								Kernel: Fix process exiting infinite loop  
							
							... 
							
							
							
							If process was exiting and had a process waiting for it and that waiting
process got interrupted, the exiting process could never exit. 
							
						 
						
							2024-07-18 21:40:44 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								3ab1214012 
								
							 
						 
						
							
							
								
								LibC: Fix _toupper and _tolower definitions  
							
							... 
							
							
							
							They were using C++ global namespace, which of course does not exist for
C targets. 
							
						 
						
							2024-07-18 01:10:51 +03:00