Bananymous 
							
						 
						
							
								3352640d09 
								
							 
						 
						
							
							
								
								LibC: strlen had to be marked not optimized...  
							
							
							
						 
						
							2023-12-19 21:42:59 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								637397dd2f 
								
							 
						 
						
							
							
								
								LibC: Make memcpy and memset not optimized  
							
							... 
							
							
							
							GCC does some weird optimizations and breaks these functions 
							
						 
						
							2023-12-19 21:42:59 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								5edbb1d5c4 
								
							 
						 
						
							
							
								
								LibC: make execvp fail if no executable found  
							
							
							
						 
						
							2023-12-19 21:42:59 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								1cd5b3c20c 
								
							 
						 
						
							
							
								
								LibC: Fix stpncpy  
							
							... 
							
							
							
							I had misunderstood and tought that the string is always
null terminated 
							
						 
						
							2023-12-15 00:33:37 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								c773e2ed07 
								
							 
						 
						
							
							
								
								LibC: Optimize malloc even further  
							
							... 
							
							
							
							aoc2023/day12 now runs in 3.5 seconds on my machine. This is way
better than the old almost hour. 
							
						 
						
							2023-12-14 23:49:25 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								c4186bd5f0 
								
							 
						 
						
							
							
								
								LibC: Compile with -O2 optimizations  
							
							... 
							
							
							
							I have no idea why libc had no optimizations enabled.
Weird thing is that memcpy optimized to infinite loop if I kept the
__restrict__ attributes in pointers. I don't think there was any ub. 
							
						 
						
							2023-12-14 23:40:08 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								5f640da166 
								
							 
						 
						
							
							
								
								LibC: Optimize malloc by a lot  
							
							... 
							
							
							
							I now cache first free node in malloc_pool and whether the node is
last or not. There allow doing less full iterations over the whole
malloc pool.
Malloc is still unbearably slow and I will have to write a proper
fast malloc at some point. With this patch running aoc2023/day12 is
atleast possible. Probabaly will take closer to an hour... 
							
						 
						
							2023-12-14 15:31:00 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								7320104fd0 
								
							 
						 
						
							
							
								
								LibC: Mark __assert_fail as noreturn  
							
							
							
						 
						
							2023-12-14 15:13:54 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								600bd7ee0f 
								
							 
						 
						
							
							
								
								LibC: Implement rmdir in unistd.h  
							
							
							
						 
						
							2023-12-14 11:02:56 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								adf1e54605 
								
							 
						 
						
							
							
								
								LibC: Implement more functions to string.h  
							
							
							
						 
						
							2023-12-14 11:02:30 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								a3de64f5fa 
								
							 
						 
						
							
							
								
								LibC: Implement basic version of system() this assumes Shell exists  
							
							
							
						 
						
							2023-12-14 11:00:40 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								8216d09e06 
								
							 
						 
						
							
							
								
								LibC: Implement non-locale specific functions from strings.h  
							
							
							
						 
						
							2023-12-14 10:59:39 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								694cda6e40 
								
							 
						 
						
							
							
								
								LibC: Implement remove for stdio  
							
							
							
						 
						
							2023-12-14 10:58:50 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								00d57d783e 
								
							 
						 
						
							
							
								
								LibC+userspace: Make everything compile with -Wall -Wextra -Werror  
							
							... 
							
							
							
							I added -Wall -Wextra -Werror as public compile flags to libc. Now
everything in userspace in compiled using these flags. I made all
necessary changes to allow compilation to work.
Only exception is execvp which has a large stack usage. Maybe it
should use malloc for the buffer but posix allows ENOMEM only when
kernel is out of memory... This can be fixed when fexecve is
implemented and there is no need for absolute path. 
							
						 
						
							2023-12-10 19:20:14 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								9d8c9baa3f 
								
							 
						 
						
							
							
								
								LibC: Remove unnecessary RWX mask definition  
							
							
							
						 
						
							2023-12-09 19:43:49 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								0dc168a8c0 
								
							 
						 
						
							
							
								
								LibC: Implement basic execvp  
							
							
							
						 
						
							2023-12-06 18:14:00 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								76049b2e13 
								
							 
						 
						
							
							
								
								LibC: Implement and fix some string.h functions  
							
							
							
						 
						
							2023-12-06 18:13:34 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								976ae64f88 
								
							 
						 
						
							
							
								
								LibC: make sleep() set errno if sleep woke up early  
							
							
							
						 
						
							2023-12-06 13:13:43 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								1c78671078 
								
							 
						 
						
							
							
								
								Kernel: Rework all signal code  
							
							... 
							
							
							
							Signal handling code was way too complex. Now everything is
simplified and there is no need for ThreadBlockers.
Only complication that this patch includes is that blocking syscalls
have to manually be made interruptable by signal. There might be some
clever solution to combat this is make this happen automatically. 
							
						 
						
							2023-12-06 13:02:17 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								cdcc36efde 
								
							 
						 
						
							
							
								
								Kernel: Remove unnecessary raise syscall  
							
							
							
						 
						
							2023-12-06 13:00:45 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								894065a67e 
								
							 
						 
						
							
							
								
								LibC: cleanup and fix fgets  
							
							... 
							
							
							
							My quick fix for fgets wrote non-nullterminated newline if size was
one.
POSIX doesn't specify what happens if size == 0, so I do the same as
glibc and return NULL without setting errno. 
							
						 
						
							2023-12-05 10:00:43 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								95fc894303 
								
							 
						 
						
							
							
								
								LibC: fix fgets when reading empty line  
							
							
							
						 
						
							2023-12-05 07:46:14 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								327b330338 
								
							 
						 
						
							
							
								
								Kernel: Make internal framebuffer bpp constexpr defined in libc  
							
							
							
						 
						
							2023-11-29 20:07:33 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								d86ecf4f61 
								
							 
						 
						
							
							
								
								Kernel: Reading from negative offset in fb dev gives out info  
							
							
							
						 
						
							2023-11-28 23:50:11 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								09b7cb2f33 
								
							 
						 
						
							
							
								
								Kernel/LibC: Implement pread()  
							
							
							
						 
						
							2023-11-28 23:47:30 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								60e755210c 
								
							 
						 
						
							
							
								
								Kernel/LibC: Implement very basic msync  
							
							
							
						 
						
							2023-11-22 22:44:06 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								c084ce8b01 
								
							 
						 
						
							
							
								
								Kernel/LibC: Implement readlink and readlinkat  
							
							
							
						 
						
							2023-11-11 23:16:52 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								f6c312a6b3 
								
							 
						 
						
							
							
								
								BuildSystem: using sysroot doesn't need root privileges anymore!  
							
							... 
							
							
							
							Sysroot is now created with fakeroot. This allows root access to be
only needed for disk image creation, since it uses loopback devices. 
							
						 
						
							2023-11-04 17:50:43 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								7c6832cee4 
								
							 
						 
						
							
							
								
								LibC: implement and call __cxa_finalize() on exit()  
							
							... 
							
							
							
							This allows global destructors to be actually called 
							
						 
						
							2023-10-30 11:10:08 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								0b5fcb3f88 
								
							 
						 
						
							
							
								
								Kernel/LibC: Add crt* files to LibC and remove crt0 from kernel  
							
							... 
							
							
							
							There was no reason for libc get crt0 from kernel. 
							
						 
						
							2023-10-30 11:06:13 +02:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								87ff38664a 
								
							 
						 
						
							
							
								
								Kernel/LibC: Add syscall and wrapper for unlink  
							
							
							
						 
						
							2023-10-25 21:45:04 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								6ee4d10651 
								
							 
						 
						
							
							
								
								Kernel/LibC/Userspace: Implement mkdir and creat  
							
							... 
							
							
							
							Touch now uses creat insteadd of open with O_CREAT flag 
							
						 
						
							2023-10-25 21:07:26 +03:00  
				
					
						
							
							
								
								Bananymous 
							
						 
						
							
								627b8cc140 
								
							 
						 
						
							
							
								
								Kernel/LibC: implement chmod syscall + libc wrapper  
							
							
							
						 
						
							2023-10-25 02:35:37 +03:00  
				
					
						
							
							
								 
						
							
								5ee3506474 
								
							 
						 
						
							
							
								
								Kernel: Add physical memory info to /proc/{pid}/meminfo  
							
							
							
						 
						
							2023-09-30 22:11:45 +03:00  
				
					
						
							
							
								 
						
							
								785de5f9b9 
								
							 
						 
						
							
							
								
								Kernel: /proc/{pid}/meminfo now reports per process memory usage  
							
							
							
						 
						
							2023-09-30 21:20:18 +03:00  
				
					
						
							
							
								 
						
							
								d7a00e8cc2 
								
							 
						 
						
							
							
								
								LibC: Implement stpcpy since gcc seems to need it  
							
							... 
							
							
							
							gcc seems to optimize some calls to strcpy to stpcpy 
							
						 
						
							2023-09-30 20:58:19 +03:00  
				
					
						
							
							
								 
						
							
								9f0797047f 
								
							 
						 
						
							
							
								
								Kernel/LibC: dirent now contains file type  
							
							
							
						 
						
							2023-09-30 20:46:57 +03:00  
				
					
						
							
							
								 
						
							
								23f429e23b 
								
							 
						 
						
							
							
								
								LibC: Fix mmap()  
							
							... 
							
							
							
							mmap() did not pass fildes to the syscall structure. 
							
						 
						
							2023-09-29 17:24:21 +03:00  
				
					
						
							
							
								 
						
							
								48096b18c2 
								
							 
						 
						
							
							
								
								LibC: mmap returns MAP_FAILED instead of NULL  
							
							
							
						 
						
							2023-09-29 10:38:08 +03:00  
				
					
						
							
							
								 
						
							
								15cd59b8ce 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								6eda65eea6 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								1abf787596 
								
							 
						 
						
							
							
								
								LibC: Add errno for unknown error  
							
							
							
						 
						
							2023-09-28 12:06:17 +03:00  
				
					
						
							
							
								 
						
							
								61694268e2 
								
							 
						 
						
							
							
								
								LibC: Implement length modifiers to printf  
							
							
							
						 
						
							2023-09-28 11:42:57 +03:00  
				
					
						
							
							
								 
						
							
								cb76f1ea75 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								a69e5fb288 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								3ba15b41a3 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								7a7c5e433e 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								6bb2c80bdd 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								af4af1cae9 
								
							 
						 
						
							
							
								
								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  
				
					
						
							
							
								 
						
							
								63dc2b6aa6 
								
							 
						 
						
							
							
								
								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