Commit Graph
100 Commits
Author SHA1 Message Date
Bananymous dcdab4df21 ports/sdl12-compat: Remove unnecessary patch
This is not needed as our SDL2 library is in the expected form
2025-11-17 05:26:07 +02:00
Bananymous 9803209ba1 WindowServer: Make clients nonblock
Also dont allow freezed windows to "steal" focus and lock up the window
server :D
2025-11-17 05:26:07 +02:00
Bananymous f166cb09ec Kernel: Fail xHCI initialization if page size != 4096
Also zero out scratchapd buffers as the spec says
2025-11-17 05:26:07 +02:00
Bananymous 2dd8b76289 BuildSystem: Automatically delete libtool files
Half of the ports had a manual post_install step to delete libtool files
this is now done automatically and there is no need for it!

Libtool files have to be deleted as libtool doesn't work while
cross-compiling (at least out of the box)
2025-11-17 05:26:07 +02:00
Bananymous 2bf7c67767 LibC: Add backtrace signal handlers for SIG{FPE,ILL,BUS,SEGV}
This allows programs to dump better backtraces on crashes compared to
what kernel can as libc can resolve symbols and libraries' dynamic bases
2025-11-17 05:26:07 +02:00
Bananymous dd636ffcb2 Kernel: Add support for SA_SIGINFO 2025-11-17 05:26:07 +02:00
Bananymous a44c45ff9e LibC: Cleanup signal.h
Make sa_handler and sa_sigaction be part of an union

Add definitions of SIGIO TRAP_BRKPT TRAP_TRACE
2025-11-17 05:26:07 +02:00
Bananymous dc2a455395 Kernel: Optimize processes' memory management
Memory regions are now stored in a sorted array. This allows O(nlogn)
lookup for address validation instead of the old linear lookup.

Now inserting new regions is also O(nlogn) instead of the old constant
time, but lookups are **much** more frequent
2025-11-17 05:26:07 +02:00
Bananymous c700d9f714 Kernel: Implement connect for UDP socket 2025-11-17 05:26:07 +02:00
Bananymous 59cfc339b0 Kernel: Ignore MSG_NOSIGNAL and invalid flags 2025-11-17 05:26:07 +02:00
Bananymous e06c07ca89 ports: Update binutils 2.44->2.45
Now we don't have to keep patches for both versions around :D
2025-11-17 05:26:07 +02:00
Bananymous 6facd54a7e LibC: Add ru_maxrss to struct rusage
This is not required by posix but some ports use it
2025-11-17 05:26:07 +02:00
Bananymous 6f8d850726 BuildSystem: Cleanup port building script
All dependencies are now installed only ones. If a port depends on for
examle zlib and one of its other dependencies depends on zlib, zlib will
now get installe only once.

Accept .tgz archives as the main download file
2025-11-17 05:26:07 +02:00
Bananymous f3beee9874 Kernel: Cleanup userspace pointer validation 2025-11-17 02:33:00 +02:00
Bananymous 35e063bdaf Kernel: Dump r8-r15 on x86_64 exceptions 2025-11-17 02:33:00 +02:00
Bananymous 09175d1799 Kernel: Fix 32 bit target
Rewrite some assembly and add some required casts
2025-11-17 02:33:00 +02:00
Bananymous 46f9a9053f DynamicLoader: Use canonical path for the main executable 2025-11-13 04:20:53 +02:00
Bananymous bb86520094 Kernel: Set message flags in UDP and TCP recvmsg 2025-11-13 04:20:53 +02:00
Bananymous c1e2c660bf LibC: Define caddr_t
This is used by some ports
2025-11-13 04:20:53 +02:00
Bananymous 89c0ff1a9d Kernel/LibC: Replace SYS_{GET,SET}_TLS with SYS_{SET,GET}_{FS,GS}BASE
This allows userspace to use both registers
2025-11-13 04:20:53 +02:00
Bananymous 7a68ce7e94 DynamicLoader: Fix testing for possible base address
Replace MAP_FIXED with MAP_FIXED_NOREPLACE and only attempt to map
program headers with PT_LOAD
2025-11-13 04:20:53 +02:00
Bananymous 9537922acc Kernel: Implement proper memory region splitting
Memory regions are now splitted when they get munmapped, mprotected, or
mmapped with MAP_FIXED. This is used by couple of ports, and without
this we were just leaking up memory or straight up crashing programs.
2025-11-13 04:20:53 +02:00
Bananymous a39aa73e21 Kernel: Allow munmap on non-page aligned address 2025-11-12 00:06:36 +02:00
Bananymous f1d12c330e Kernel/LibC: Implement MMAP_FIXED_NOREPLACE
This is a handy thing from linux

Also fix MMAP_FIXED validation and error reporting
2025-11-12 00:06:36 +02:00
Bananymous 82c8eeb4be ports/openssh: Update to 10.2p1 and enable fd passing 2025-11-12 00:06:36 +02:00
Bananymous 3a951f4830 LibC: Define IN_LOOPBACKNET
some ports expect this to exist
2025-11-12 00:06:36 +02:00
Bananymous 998ea25fb9 LibC: Add netinet/in_systm.h compatibility header 2025-11-12 00:06:36 +02:00
Bananymous 7b580b8f56 Kernel: Implement fd passing with SCM_RIGTHS 2025-11-12 00:06:36 +02:00
Bananymous 641ccfdd47 LibC: Add BSD compatibility defines S_I{READ,WRITE,EXEC}
These just map to S_I{R,W,X}USR respectively
2025-11-10 01:40:33 +02:00
Bananymous 4288f70d04 LibC: Make poll and epoll macros match with each other
This was an assertion in one of my ports and I couldn't be bothered to
write a patch for it :D
2025-11-10 01:40:33 +02:00
Bananymous 95fda5dfb7 LibC: Add definitions for IPPROTO_ICMPV6 and IP_TOS 2025-11-10 01:40:33 +02:00
Bananymous 1903c5e0c6 Kernel: Use user given address hint in mmap if possible 2025-11-10 01:40:33 +02:00
Bananymous 362501a097 LibC: Make x86_64 crt0 PIE compatible
Instead of pushing addresses of functions directly, use rip relative
addressing
2025-11-10 01:40:33 +02:00
Bananymous 72982e3c2b Kernel/LibC: Take fcntl extra field as uintptr_t
This allows passing pointers to fcntl
2025-11-10 01:40:33 +02:00
Bananymous 04d24bce70 Kernel/LibC: Implement {recv,send}msg as syscalls
This also removes the now old recvfrom and sendto syscalls. These are
now implemented as wrappers around recvmsg and sendmsg.

Also replace unnecessary spinlocks from unix socket with mutexes
2025-11-10 01:40:33 +02:00
Bananymous 2f38306c6b LibC: Implement simple posix_spawn{,p}
This does not support file_actions or attributes
2025-11-10 01:40:33 +02:00
Bananymous 4b36e5197d LibC: Implement execvpe
This is not part of posix but it seems handy
2025-11-09 16:12:29 +02:00
Bananymous b755cf3e42 LibC: Add sockatmark stub 2025-11-07 14:57:00 +02:00
Bananymous 3acad7c911 LibC: Add ifreq.ifr_{flags,mtu} and fix defines
compatibility defines for ifr_{netmask,gwaddr,hwaddr} were wrong
2025-11-07 14:55:30 +02:00
Bananymous f3319016c4 LibC: Implement if_{,free}nameindex 2025-11-07 14:54:53 +02:00
Bananymous 4e14f7d483 LibC: Implement {,l,ll}{abs,div} 2025-11-06 23:20:35 +02:00
Bananymous 979059c804 Kernel: Implement ext2 symlinks with >= 60 byte target 2025-11-06 17:21:36 +02:00
Bananymous bdf4423512 ports/freetype: Add missing dependencies 2025-11-04 23:06:13 +02:00
Bananymous c6ef4b5840 userspace: Implement kill utility 2025-11-04 19:19:46 +02:00
Bananymous acd792d8b4 userspace: Implement pwd utility 2025-11-04 18:46:13 +02:00
Bananymous fc730679ed userspace: Implement uname utility 2025-11-04 18:45:20 +02:00
Bananymous 00e5749e20 ports: Add SuperTux port 2025-11-02 22:47:02 +02:00
Bananymous 7b4d349574 ports: Add glm port 2025-11-02 22:47:02 +02:00
Bananymous dc0cccfb6c ports: Add physfs port 2025-11-02 22:47:02 +02:00
Bananymous fdc1daefb6 ports: Add libvorbis port 2025-11-02 22:47:02 +02:00
Bananymous c9159b81c8 ports: Add libogg port 2025-11-02 22:47:02 +02:00
Bananymous 9233049356 ports: Add openal-soft port 2025-11-02 22:47:02 +02:00
Bananymous bd9015e474 ports: Add libsndfile port 2025-11-02 22:47:02 +02:00
Bananymous 3a79540d2d ports: Add SDL2_image port 2025-11-02 22:47:02 +02:00
Bananymous 9e500dc387 ports: Add boost port 2025-11-02 22:47:02 +02:00
Bananymous e05a735589 DynamicLoader: Honour STB_LOCAL binding 2025-11-02 22:47:02 +02:00
Bananymous 0be18c4a53 DynamicLoader: Make everything thread safe
This is kinda dumb implementation, but it works. We grap a global lock
on functions :)
2025-11-02 22:47:02 +02:00
Bananymous e258fde25a LibC: Implement unnamed semaphores 2025-11-02 21:11:16 +02:00
Bananymous 7367672570 Kernel: Default initialize flock as unlocked
This caused unlocked flock's to hang on lock
2025-11-02 21:10:13 +02:00
Bananymous b822d42889 LibC: Define ESHUTDOWN
This is not used but some ports expect it to exist
2025-11-02 21:09:48 +02:00
Bananymous 10084ff1bb LibC: Define FIONBIO
This doesn't do anything but some ports expect it to exist
2025-11-02 21:07:26 +02:00
Bananymous c3c69ac727 LibC: Update _POSIX_* definitions and extern environ
environ is externed by other operating systems so some ports expect it
to be there
2025-10-30 16:49:12 +02:00
Bananymous 0cfda6f6a7 LibC: Add posix_fadvise as no-op 2025-10-30 16:34:03 +02:00
Bananymous dc51ce9e92 LibC: Implement readdir_r and fix memory leak 2025-10-30 16:33:17 +02:00
Bananymous aa0de2b00e LibC: Fix stack_t::ss_sp type from void** -> void* 2025-10-30 15:43:25 +02:00
Bananymous 5f61581e1d Kernel: Show QR code with panic logs on kernel panic
This makes debugging on real hardware easier!
2025-10-28 05:50:19 +02:00
Bananymous f519cb2cc0 Kernel: Expose boot framebuffer device 2025-10-28 05:50:19 +02:00
Bananymous 37aef630d2 BAN: Fix Array and Vector span constness 2025-10-28 05:50:19 +02:00
Bananymous d93fcff5db userspace: Add LibQR
This library can be used to generate QR codes
2025-10-28 05:50:19 +02:00
Bananymous 4952a82af5 LibImage: Use LibDEFLATE instead of builtin DEFLATE decompressor 2025-10-28 05:50:19 +02:00
Bananymous fecda6a034 userspace: Add LibDEFLATE
This can be used to compress and decompress DEFLATE data either in raw
or zlib format
2025-10-28 05:50:19 +02:00
Bananymous 9f0addbd8b BAN: Implement simple priority queue
This is just a wrapper around BAN::Vector and heap functions
2025-10-26 00:32:00 +03:00
Bananymous 7f8ea6b8e0 BAN: Move heap functions to Heap.h
This also adds push_heap and pop_heap, similar to what C++ standard
library provides
2025-10-26 00:31:06 +03:00
Bananymous 9d3ea6fed7 BAN: Use new it_value_type_t in sorting functions 2025-10-26 00:30:51 +03:00
Bananymous 703b3eda56 BAN: Add it_value_type_t
This is a template that resolves into T for pointers to T and T::value_type otherwise. It allows using the underlaying type of an iterator or pointer for range based algorithms
2025-10-26 00:22:35 +03:00
Bananymous 84006e1e77 BuildSystem: Don't set symlink mode
Only call chmod if the file is not a symlink. Older versions of chmod
(shipped with ubuntu) don't support the -h flag.
2025-10-02 17:05:20 +03:00
Bananymous 73fb085a41 LibC: Add inet_pton for IPv4 addresses 2025-10-02 16:19:49 +03:00
Bananymous c89780178f LibC: Add sys/polls.h as wrapper for poll.h
some ports require this
2025-10-02 16:02:07 +03:00
Bananymous 2ac3976924 ports/libiconv: Fix download url
remove /pub/ part of url as mirrors don't seem to accept it
2025-10-02 15:54:55 +03:00
Bananymous ac9dbd24e4 ports/vim: Fix compilation on new toolchain 2025-09-30 16:15:05 +03:00
Bananymous 3af9830a2e ports/tuxraces: Cleanup cflag passing 2025-09-30 16:14:40 +03:00
Bananymous da6b8eb2ab BuildSystem: Use ftpmirror.gnu.org for downloads
ftp.gnu.org is really slow :(
2025-09-30 16:13:38 +03:00
Bananymous da39e98adf Kernel: Make F11 drop disk cache
This can be useful to detect memory leaks or something
2025-08-31 00:36:59 +03:00
Bananymous 791a541381 Kernel: Implement process stopping and continuing 2025-08-31 00:34:52 +03:00
Bananymous 56684e753b Kernel: Fix PS/2 legacy controller detection
This was wrong for devices without FADT or pre revision 3 FADT
2025-08-29 21:07:33 +03:00
Bananymous c7298edf65 Kernel: Clone executable path on fork
Before this forked processes had empty executables
2025-08-29 01:41:18 +03:00
Bananymous 30215963b2 Kernel: Fix /proc/<pid>/exe permissions 2025-08-29 01:40:56 +03:00
Bananymous f15f88ebd6 TaskBar: Don't leak fds when reading battery info 2025-08-28 15:57:10 +03:00
Bananymous 391fc0c4c2 Kernel: Don't crash if Ext2 filesystem doing too many fileops
I had a hardlimit of 10 block buffers and if they ran out, the kernel
would crash. this patchs increases the number of buffers to 16 and
removes the crash condition when they run out :D
2025-08-28 15:55:40 +03:00
Bananymous 948ef2c820 Kernel: Fix race condition when destroying threads 2025-08-28 15:55:40 +03:00
Bananymous c1b6b6b76a Kernel: Fix string validation in unlink syscall 2025-08-28 15:55:40 +03:00
Bananymous a8bb07052e Kernel: Rewrite SMP message code
Remove locks and map smp buffer as uncached
2025-08-28 15:55:40 +03:00
Bananymous 6976a2dae7 Kernel: Add hardlink support to USTAR
Also handle file types L and K for long file names and link names
2025-08-28 15:55:40 +03:00
Bananymous 51cd951b4c Kernel: Add hardlink support to tmpfs 2025-08-28 15:55:40 +03:00
Bananymous 16a5a234c1 Kernel: Cleanup hardlink creation 2025-08-28 15:55:40 +03:00
Bananymous f994210927 LibC: Fix sigsetjmp (again)
I was using a wrong register for signal mask storage...
2025-08-28 15:55:40 +03:00
Bananymous aaa8760d09 Kernel: Don't wait for ps2 timeout when flushing buffer
This speeds up boot time by a second :dd:
2025-08-28 15:55:40 +03:00
Bananymous cea19ecc31 Kernel: Fix possible crash during exec 2025-08-28 15:55:40 +03:00
Bananymous 706cfeb443 Kernel: Allow file backed mapping be larger than inode size
This is only allowed if the mapping does **not** exceed a page boundary.
Some port was doing an exactly two-page-mapping on a file that was one
and a half page long
2025-08-28 15:55:40 +03:00
Bananymous d9c91589f0 Kernel: Don't limit /tmp max size 2025-08-28 15:55:40 +03:00