Commit Graph
100 Commits
Author SHA1 Message Date
Bananymous 3ad053cf6d image: Add option to change resize algoritm
Also benchmark timing is now done cpu clock, not monotonic one
2026-01-06 21:58:56 +02:00
Bananymous bc11469a0b mkdir: Fix mkdir error handling 2026-01-06 21:58:56 +02:00
Bananymous a00695bdac LibC: Add stubs that I have locally
I'm not sure if these are used by anything but I would assume so as I
have added them :D

functions added:
- getprotobyname
- open_memstream
- munlock
- lockf
- nice
- crypt
- getsid
- wcstoul
2026-01-06 21:58:56 +02:00
Bananymous 89959b800c LibC: Implement random and srandom 2026-01-06 21:58:56 +02:00
Bananymous 3e19c3b62e LibC: Fix timeradd and timersub overflow/underflow 2026-01-06 21:58:56 +02:00
Bananymous d970debb4d LibC: Define MAXPATHLEN in sys/param.h
This file is not POSIX, but some software seems to rely on it
2026-01-06 21:58:56 +02:00
Bananymous d0ba52073f LibC: Add stubs for shm_* functions 2026-01-06 21:58:56 +02:00
Bananymous 943e3b6f51 LibC: Define IN_CLASS* macros
These are not POSIX but some software seems to rely on them
2026-01-06 21:58:56 +02:00
Bananymous 25d43682aa LibC: Bump FOPEN_MAX 16->64 2026-01-06 21:58:56 +02:00
Bananymous ad16de59f8 Kernel: Implement basic F_{GET,SET}LK{,W}
At the moment these lock the whole file which is not what is supposed to
happen. Some port was trying to use these and this seems to work for
that. This may cause deadlocks but that should be easy enough to find
the reason because of the debug warnings
2026-01-06 21:58:56 +02:00
Bananymous 8634bbb792 Kernel: Don't save/restore sse or reschedule on spurious interrupts
I think these should be just fully ignored :D
2026-01-06 21:58:56 +02:00
Bananymous 60ec5d30fd init: Start Clipboard server on startup
I had forgotten to commit this when I added the clipboard server :D
2026-01-06 21:58:56 +02:00
Bananymous 7667fe6ca5 LibC: Implement sem_timedwait 2026-01-06 21:58:56 +02:00
Bananymous 4b5a8196c3 Kernel: Fix bitmap byte index calculation in PMM
No idea how I had not crashed here earlier, but running on real hw with
a bit initrd ended up crashing :D
2026-01-04 01:16:43 +02:00
Bananymous 706c0816dd Kernel: Move smp_initialized flag after schedulers are initialized
Before this real hardware failed to boot with smp enabled. Allocating
the idle thread does a page mapping which ends up broadcasting TLB
shootdown to other processes. This ends up failing somewhere halting the
processors never allowing them to initialize their scheduler
2026-01-03 23:39:07 +02:00
Bananymous a8aa89362d ports/SDL2: Add support for game controllers
SuperTux and tuxracer now work with controller support!
2026-01-03 20:42:42 +02:00
Bananymous 7964698ae5 userspace: Add simple joystick test app 2026-01-03 20:42:42 +02:00
Bananymous 65664b0d65 Kernel: Add support for DualShock 3 controllers
This driver accepts any HID joystick devices but button and axis
mappings will only work on a PS3 controller
2026-01-03 20:07:08 +02:00
Bananymous 08bfa0971e Kernel: Rework storage device and disk cache locking
Syncing the disk cache no longer blocks the underlying storage device
and the disk cache itself during sync
2026-01-02 18:06:56 +02:00
Bananymous 912c5ea0bf Kernel: Implement basic RWLock 2026-01-02 17:50:22 +02:00
Bananymous 6cdf5a5a7f Kernel: Make AHCI controller thread safe 2026-01-02 17:50:22 +02:00
Bananymous 50ba743faf Terminal: Cleanup CSI handling and add =c,>c,c,E,F 2026-01-02 17:13:46 +02:00
Bananymous e26aac3067 Kernel: Decrease the number of syncs done by ext2 inodes
Each allocated inode used to call sync(). Each sync reads and writes
a block from the filesystem. Doing a 1 MiB write ended up syncing around
257 times
2026-01-01 23:54:09 +02:00
Bananymous 941e8aa5d5 Kernel: Optimize ext2 filesystem
block lookup can now also allocate blocks so there is no need to do
multiple lookups of the block did not exist
2026-01-01 23:15:35 +02:00
Bananymous 33b6536e6b Kernel: Make disk cache entry lookup O(log n)
I have absolutely no idea why i was doing a linear lookup here :D
2026-01-01 20:40:38 +02:00
Bananymous 9fbd9288b2 Kernel: Fix symlink deletion from tmpfs
Small symlinks store their target in inline storage of data block
indices. Freeing blocks did not account for this and tried to interpret
the link target as block inidices to delete
2026-01-01 20:40:38 +02:00
Bananymous bef1a56007 ports: Update git 2.48.1->2.52.0
also remove curl link hack as updating curl port fixed the issue
2026-01-01 20:40:38 +02:00
Bananymous bc71ff5e81 ports: Update curl 8.11.1->8.17.0
This fixes broken DT_NEEDED dependencies in curl!
2026-01-01 20:40:38 +02:00
Bananymous bd50444d06 ports: Update ca-certificates 2024-07-02 -> 2025-12-02 2025-12-31 19:28:55 +02:00
Bananymous 2efd6f92b2 rm: add -f and -i options
rm *should* now be posix compatible
2025-12-31 19:28:55 +02:00
Bananymous 7fdfad4088 Kernel: Mount /tmp with sticky bit set 2025-12-31 19:28:55 +02:00
Bananymous 31a1968798 Kernel: Cleanup scheduling while idling
If there are no threads in the run queue and we are idle, attempt to
wake up threads from the sleep queue
2025-12-31 19:28:55 +02:00
Bananymous b0bd4ad546 Kernel: Fix dup2 return value
We returned the wrong fd number :D
2025-12-31 19:28:55 +02:00
Bananymous dc454b9a6a Kernel: Fix SA_RESETHAND handling order
if SA_RESETHAND was set, alt stack would not get used
2025-12-31 19:28:55 +02:00
Bananymous f06e5d33e7 Kernel: Rework socket binding to an address
Sockets are no longer bound to an interface, but an ipv4 address. This
allows servers at 0.0.0.0 talk to multiple different interfaces
2025-12-31 19:28:55 +02:00
Bananymous efdbd1576f ports/SDL2: disable static lib and enable semaphores
Also add libiconv as a dep so SDL_iconv_string etc works
2025-12-28 15:30:02 +02:00
Bananymous 0421fbdc25 LibC: Implement sem_getvalue 2025-12-28 15:29:37 +02:00
Bananymous bd426199f8 Kernel: Remove unused (and broken) code from signal trampoline 2025-12-28 03:53:38 +02:00
Bananymous 8e00b3d110 ports: Add ffmpeg port
This allows basic video and audio playback on banan-os!
2025-12-28 00:12:03 +02:00
Bananymous 6fbf1469aa LibC: define static_assert in assert.h
This is needed from C11 until C23
2025-12-28 00:12:03 +02:00
Bananymous 280d3fd919 LibC: Fix assert.h include guard 2025-12-28 00:12:03 +02:00
Bananymous 40ce95b87f LibC: Add definition for TCP_MAXSEG
This is not implemented yet
2025-12-27 23:37:03 +02:00
Bananymous e7d644b874 AudioServer: Fix rounding the number of samples when resampling
If client tried to play a single sample at lower frequency as the
kenrel, audio server would never play it leading to the client hanging

This makes calculations round the number of samples always up to fix
this
2025-12-18 16:05:28 +02:00
Bananymous c64159d5c3 AudioServer: Fix resampling math
This caused resampled audio to freeze the whole audio system after few
minutes of playing (like doom)
2025-12-18 14:59:55 +02:00
Bananymous e2ccc3026f BAN: Remove unnecessary c++ header inclusion 2025-12-16 16:44:42 +02:00
Bananymous 2af6066ee3 LibC: Fix sysconf(_SC_OPEN_MAX) 2025-12-16 05:20:18 +02:00
Bananymous fc16b5331c LibC: Fix backtrace compilation
Also dump backtrace on SIGABRT
2025-12-16 05:20:00 +02:00
Bananymous b2723a0c5f aoc2025: Implement day12 solution 2025-12-15 19:06:17 +02:00
Bananymous 01042a24f0 aoc2025: Implement day11 solution 2025-12-15 17:57:45 +02:00
Bananymous f9643b3881 aoc2025: Implement day10 solution 2025-12-15 14:42:03 +02:00
Bananymous d2d18bea5d aoc2025: Implement day9 solution 2025-12-13 03:09:15 +02:00
Bananymous 87e595b83e aoc2025: Implement day8 solution 2025-12-12 22:37:03 +02:00
Bananymous 08031b1227 aoc2025: Implement day7 solution 2025-12-12 21:15:22 +02:00
Bananymous 9a87c1f734 aoc2025: Implement day6 solution 2025-12-12 20:17:12 +02:00
Bananymous edeb667ead aoc2025: Implement day5 solution 2025-12-12 06:30:03 +02:00
Bananymous db2aa495b8 aoc2025: Implement day4 solution 2025-12-12 06:08:00 +02:00
Bananymous ddfb591094 aoc2025: Implement day3 solution 2025-12-12 04:34:40 +02:00
Bananymous e8f1ba3722 aoc2025: Implement day2 solution 2025-12-12 02:49:33 +02:00
Bananymous 19c4f34ccb aoc2025: Implement day1 solution 2025-12-12 02:49:10 +02:00
Bananymous 5d9e9c021a aoc2025: Prepare programming environment 2025-12-12 02:48:40 +02:00
Bananymous 6a924db68c Kernel: Implement FIONREAD for tty and pty 2025-11-24 18:15:10 +02:00
Bananymous 9d0990e5e8 Kernel: Implement /proc/<n>/fd 2025-11-24 00:19:51 +02:00
Bananymous 3207f5d61f Kernel: Fix possible page fault on file lookup 2025-11-23 19:49:07 +02:00
Bananymous c72b351bba LibC: Implement glob{,free} 2025-11-23 05:33:44 +02:00
Bananymous 1f9b296ae7 cp: Add -r/--recursive flag 2025-11-23 02:25:05 +02:00
Bananymous e3e2e7b4df userspace: Implement mv utility 2025-11-23 02:24:52 +02:00
Bananymous 4ec8f4a4bf Kernel/LibC: Implement rename{,at} 2025-11-22 23:55:10 +02:00
Bananymous 05d59a05df Kernel: Remove obsolete kprint
This hasn't been in use in 3 years :)
2025-11-22 06:21:50 +02:00
Bananymous 11ccbe6506 ports/SDL2: Add clipboard support 2025-11-22 01:24:06 +02:00
Bananymous 673711a246 ports/mesa: Require llvm
I dont't really even want to suppot softpipe as that is so slow
2025-11-22 00:40:14 +02:00
Bananymous fff5139d80 Kernel: Add /proc/<n>/cwd
Also update /proc/<n>/* permissions to match what linux does :D
2025-11-18 05:40:36 +02:00
Bananymous 812e70c626 ports: Add zsh port 2025-11-18 05:40:36 +02:00
Bananymous db7ffcf9d5 Kernel/Terminal: Add support for bracketed paste mode
This gets rid of annoying warnings when running some programs like bash
2025-11-18 05:40:36 +02:00
Bananymous 8f6cb9c057 Terminal: Add selection and clipboard support
text can now be copied with ctrl+shift+c and pasted with ctrl+shift+v
2025-11-18 05:40:36 +02:00
Bananymous 291f298d19 userspace: Implement LibClipboard and ClipboardServer
programs can now connect to the clipboard server using libclipboard and
get and set the clipboard of the current user
2025-11-18 05:40:36 +02:00
Bananymous d60f12d3b8 Kernel: Add support for SCM_CREDENTIALS and fix recvmsg
recvmsg was broken when receiving into more than a single iovec
2025-11-18 05:40:36 +02:00
Bananymous b8a2573bb4 userspace: Implement ImageViewer utility
This supports viewing images and doing basic zooming and panning
2025-11-17 20:58:12 +02:00
Bananymous 7ce8e610f5 stat: Fix handling of symlinks 2025-11-17 05:26:07 +02:00
Bananymous 839b9c8f07 Kernel: Check parent's sticky bit in unlink 2025-11-17 05:26:07 +02:00
Bananymous db20801521 Shell: Add exec builtin 2025-11-17 05:26:07 +02:00
Bananymous 160a9278c9 LibC: Fix RTLD_* definitions 2025-11-17 05:26:07 +02:00
Bananymous ee507de154 LibC: Implement posix regex
This is an almost complete implementation, it does not support
alternations or collating elements and it is restricted to the ASCII
character set
2025-11-17 05:26:07 +02:00
Bananymous dc0fa49de2 ports/tuxracer: Add sound support and fix compiling 2025-11-17 05:26:07 +02:00
Bananymous b678541427 ports: Add SDL_mixer port 2025-11-17 05:26:07 +02:00
Bananymous 6c4cd0d8cb ports: Add libmikmod port 2025-11-17 05:26:07 +02:00
Bananymous c096d3cd42 ports/sdl12-compat: Define that banan-os has alloca.h 2025-11-17 05:26:07 +02:00
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