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
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