Bananymous
8aff315c7b
LibC: fflush file in setvbuf before updating the buffer
2025-07-02 01:54:03 +03:00
Bananymous
8e0d79f301
ports: Fix make compilation with new toolchain
2025-07-02 01:54:03 +03:00
Bananymous
8a0269d29e
Kernel: Remove kernel processes
...
Kernel can just use raw threads, pretty muchs the only thing that
process provides is syscalls which kernel threads of course don't
need.
Also this makes init process have pid 1 :D
2025-07-02 01:54:03 +03:00
Bananymous
892e16dfb1
Kernel: Increase PS2 timeout to 300 ms, load PS2 in separate thread
...
PS/2 seems to hit command timeout sometimes on slow emulation so
increase the timeouts.
Also move PS/2 device initialization to a different thread because
device indentification waits for timeouts.
2025-07-02 00:17:42 +03:00
Bananymous
92e4078287
Kernel: Rewrite ThreadBlocker
...
This gets rid of a very old bug where kernel panics when thread is being
woken up and unblocked at the same time on different cores. This
required adding a new lock to SchedulerQueue::Node and adding a cap to
how many threads a threadblocker can simultaneously block. I don't think
I ever block more than five threads on the same ThreadBlocker so this
should be fine.
2025-07-02 00:17:42 +03:00
Bananymous
41e1819072
Kernel: Align argv and envp to pointer boundary
...
This bug was found with ubsan
2025-07-02 00:17:42 +03:00
Bananymous
fb7e9719a1
Kernel: Add fast fill method to framebuffer device
...
This makes `clear` much faster when running without kvm!
2025-07-02 00:17:42 +03:00
Bananymous
c2d09b64ca
Kernel: Drop 24 bpp support from double buffer
...
I don't even know why this was supported, I am not planning on making
the fb anything other than 32 bpp
2025-07-02 00:17:42 +03:00
Bananymous
1b2aa6c2da
Kernel: Fix unaligned access in AML
...
Found with ubsan
2025-07-02 00:17:42 +03:00
Bananymous
a5b4cee298
Kernel: Load USTAR from a boot module if loading root partition fails
...
This allows banan-os to boot on hardware where we don't have working
storage driver or the storage driver fails (pretty common with my usb
mass storage drivers...)
2025-07-02 00:17:42 +03:00
Bananymous
17f1ac10e3
Kernel: Don't ignore modules passed with multiboot2
2025-07-02 00:17:42 +03:00
Bananymous
c67198032f
Kernel: Rewrite TmpFS block and inode allocation
...
This makes creating files and appending to then A LOT faster. Some code
I tested took 40 seconds in the previous implementation and less than a
second on the new one!
This code is really sketcy, I hope I'll never have to touch it again :)
2025-07-02 00:17:42 +03:00
Bananymous
107b092982
Kernel: Allow arbitrary sized tmpfs files
...
The 2 block limit started to get annoying :D
2025-07-02 00:17:42 +03:00
Bananymous
bac06e45a4
Kernel: Fix TmpSymlinkInode target getting/setting
2025-07-02 00:17:42 +03:00
Bananymous
0e8a68831c
Kernel: Fix TmpInode chmod not preserving file type
2025-07-02 00:17:42 +03:00
Bananymous
5912abd541
Kernel: Add error reporting for readonly mounted filesystems
2025-07-02 00:17:42 +03:00
Bananymous
13d33995cb
Kernel: Make sure PageTable::fast_page gets passed page aligned addr
2025-06-30 01:48:47 +03:00
Bananymous
c8c05f62b4
Kernel: Remove unused FileSystem::dev
2025-06-29 00:29:03 +03:00
Bananymous
944b045885
Toolchain: Set CMAKE_STAGING_PREFIX in toolchain file
2025-06-28 23:34:11 +03:00
Bananymous
19897ffa26
userspace: Compile test utility :D
2025-06-28 22:40:00 +03:00
Bananymous
42a10b21c7
userspace: Implement true and false utilities
2025-06-28 22:39:19 +03:00
Bananymous
5df0e25c1f
userspace: Implement chown utility
2025-06-28 21:32:59 +03:00
Bananymous
ebf2b16d09
Kernel: Implement chown to ext2 and tmpfs
2025-06-28 21:28:54 +03:00
Bananymous
f2eaab6e43
ports: Add tuxracer port
...
THIS IS SUPER SLOW
2025-06-28 20:54:45 +03:00
Bananymous
a847823411
ports: Add tcl port
2025-06-28 20:54:45 +03:00
Bananymous
fe9a8b542a
ports: Add bochs port
...
THIS IS SUPER SLOW
2025-06-28 20:54:45 +03:00
Bananymous
cd101b6844
ports: Add sdl12-compat port
2025-06-28 20:54:45 +03:00
Bananymous
69229102c4
ports: Add SDL2 port
2025-06-28 20:52:33 +03:00
Bananymous
4bc3630d19
ports: Add glu port
2025-06-28 20:52:20 +03:00
Bananymous
ab00686ac9
ports: Add mesa port
2025-06-28 20:51:29 +03:00
Bananymous
c3004a038f
ports: Add bash port
2025-06-28 20:48:13 +03:00
Bananymous
9cf9d8847b
ports: Add lua port
2025-06-28 20:48:13 +03:00
Bananymous
0a3c10566b
ports: vim update to 9.1
2025-06-28 20:48:13 +03:00
Bananymous
c94243e107
ports: Update some ports to new syntax
2025-06-28 20:48:13 +03:00
Bananymous
505388b9fa
ports: Add pre_install and post_install to install.sh
2025-06-28 20:25:35 +03:00
Bananymous
7314cf708c
Kernel: Only restart certain syscalls with SA_RESTART
...
SA_RESTART is not supposted to restart every function.
2025-06-28 20:25:35 +03:00
Bananymous
3e6a4f2b16
LibC: Add getgroups stub
2025-06-28 20:25:35 +03:00
Bananymous
c7c3dd7662
init/ports: Fix environment variables in init/ncurses
...
init no longer sets NCURSES_NO_UTF8_ACS
ncurses no longer sets TERM
2025-06-28 20:25:35 +03:00
Bananymous
e4f025edd6
LibC: Implement deprecated bcmp, bcopy, bzero
2025-06-28 20:25:35 +03:00
Bananymous
96f3efbf86
LibC: Fix enviroment variable allocation
2025-06-28 20:25:35 +03:00
Bananymous
2b2130ff42
toolchain/ports: Use strip install targets
...
I just found that these exist. This is much cleaner than manually
stripping the executables!
2025-06-28 20:25:35 +03:00
Bananymous
463ce05da0
ports: Allow specifying custom make targets
2025-06-28 20:25:35 +03:00
Bananymous
fa4095ba95
ports: Add pre_configure to build system
...
We have post_configure, so why not this :)
2025-06-28 20:25:35 +03:00
Bananymous
db571b4859
Kernel: Allow relockign mutex even when holding a spinlock
...
Only reason mutex locking is now allowed with spinlocks is to prevent
yield.
Also try_lock can be now safely used while holding a spinlock
2025-06-28 19:40:54 +03:00
Bananymous
e8491b34b8
Kernel/LibC: Rework TIOC{G,S}WINSZ more linux like
...
Userspace can freely set terminal size, kernel just updates it when for
example new font is loaded. Also SIGWINCH is now sent by kernel instead
of userspace.
2025-06-28 19:40:54 +03:00
Bananymous
521457eb92
DynamicLoader: Add support for calling destructors
...
After all libraries are initialized, their destructors are registered
using atexit
2025-06-28 16:55:13 +03:00
Bananymous
f26a445ce6
LibC: Make malloc actually allign to s_malloc_default_align boundary
2025-06-28 16:55:13 +03:00
Bananymous
f73bb242f3
Kernel: Save fpu state and flags in signal handler
...
This was causing some weird crashes :D
2025-06-28 16:55:13 +03:00
Bananymous
9e895e5286
Kernel: Use fxsave64 and fxrstor64 on 64 bit target
2025-06-28 16:55:13 +03:00
Bananymous
5b0e5512a8
Kernel: Don't block in send until full message is sent
...
Only block until some data was sent. This allows select + send to be
actually non blocking if used correctly.
Also fixes a bug with non blocking sockets that could not send the full
message is one try.
2025-06-28 16:55:13 +03:00
Bananymous
850b3284ac
Terminal: Fix screen clearing when scrolling
2025-06-28 16:55:13 +03:00
Bananymous
05a727979a
Kernel: Make sse initialization thread safe
2025-06-28 16:55:13 +03:00
Bananymous
d68c88c3f9
LibC: Implement rewinddir
2025-06-28 16:55:13 +03:00
Bananymous
5f07d53034
WindowServer: Send mod key to clients
...
Also roll back accidental mod key update from super->alt
2025-06-28 16:55:13 +03:00
Bananymous
fe62ce4bae
Kernel: Fix spurious wakeup from SYS_SLEEP
2025-06-28 16:55:13 +03:00
Bananymous
fb09aa4d06
LibInput: Correctly resize keyboard layout maps 0xFF->0x100
2025-06-28 16:55:13 +03:00
Bananymous
4d080b30ab
LibInput: Pass raw scancode in KeyEvent
2025-06-28 16:55:13 +03:00
Bananymous
2d314e72fe
LibGUI: Implement basic message box
2025-06-28 16:55:13 +03:00
Bananymous
cf07b747fe
LibGUI/WindowServer: Implement per-window custom cursors
2025-06-28 16:55:13 +03:00
Bananymous
273e9bbc92
LibGUI/WindowServer: Implement per-window cursor hiding
2025-06-28 16:55:13 +03:00
Bananymous
7dcf1797e9
WindowServer: Cleanup packet callback calling
2025-06-28 16:55:13 +03:00
Bananymous
7aa24b6157
LibGUI: Implement serialization for BAN::Vector
2025-06-28 16:55:13 +03:00
Bananymous
d73a667437
LibGUI: Implement very bad widget system :D
2025-06-28 16:55:13 +03:00
Bananymous
4695fa061d
Kernel: Don't panic if UNIX socket is already bound but deleted
2025-06-28 16:55:13 +03:00
Bananymous
7bf7bfbe13
Texture: Add invisible color when copying textures
...
This should probably support proper alpha blending but I'm lazy :)
2025-06-28 16:55:13 +03:00
Bananymous
397219c22e
LibC: Implement very hacky dlopen/dlsym/dclose
...
If ELF loading fails, this will just crash the program :D
And there is no support for RTLD_LOCAL
2025-06-28 16:55:13 +03:00
Bananymous
83c0ef3514
Kernel: Implement CLOCK_{PROCESS,THREAD}_CPUTIME_ID
2025-06-28 16:55:13 +03:00
Bananymous
4fa40de557
WindowServer: Fix crash when moving mouse out of bounds
2025-06-28 16:55:13 +03:00
Bananymous
bc06926702
LibC: Implement gethostbyaddr
2025-06-28 16:55:13 +03:00
Bananymous
9de27110e2
LibC: Add alloca.h
2025-06-28 16:55:13 +03:00
Bananymous
93e5d09a63
Kernel/LibC: Implement flock
2025-06-28 16:55:13 +03:00
Bananymous
0cbc39698c
WindowServer: Ignore SIGPIPE so we don't crash unexpectedly
2025-06-28 16:55:13 +03:00
Bananymous
83069e433f
LibGUI/WindowServer: Implement window showing/hiding
2025-06-28 16:55:13 +03:00
Bananymous
bbb490b24f
LibGUI: Implement set_max_size
...
I already support set_min_size so why not this :)
2025-06-28 16:55:13 +03:00
Bananymous
85f200bd86
LibC: Add sched_get_priority_{min,max}
...
I don't support priority scheduling so these are just no-ops
2025-06-28 16:55:13 +03:00
Bananymous
0f2c02fb04
LibC: Add stubs for pthread_{get,set}schedparam
2025-06-28 16:55:13 +03:00
Bananymous
6d3d41abe2
Kernel: Fix possible division by zero in scheduler
2025-06-28 16:55:13 +03:00
Bananymous
6fa7fe26dc
ports: Add support for meson build systems
2025-06-28 16:55:13 +03:00
Bananymous
fe804c123d
ports: Add expat port
2025-06-28 16:55:13 +03:00
Bananymous
dba32fb95d
ports: Add SONAME to zlib's dynamic library
2025-06-28 16:55:13 +03:00
Bananymous
7dc187fdb1
ports: Update gcc 12.2.0->15.1.0
...
Also enable threading :)
2025-06-28 16:55:13 +03:00
Bananymous
ee5a627952
ports: Update mpfr 4.2.1->4.2.2
2025-06-28 16:53:06 +03:00
Bananymous
3b83561309
ports: Fix gmp port to compile with gcc 15.1.0
2025-06-28 16:53:06 +03:00
Bananymous
6fb0b5203a
ports: Update binutils 2.39->2.44
2025-06-28 16:53:06 +03:00
Bananymous
4677d7a1c6
LibC: Update RAND_MAX INT32_MAX -> INT_MAX
2025-06-19 19:06:24 +03:00
Bananymous
3283359ac8
Kernel: Cleanup ANSI DSR
2025-06-19 19:05:49 +03:00
Bananymous
fff16f6b8c
Kernel: don't directly access user memory in mmap
2025-06-19 19:04:20 +03:00
Bananymous
a347ceba74
Kernel: Cleanup sys_wait sleep/signal handling
2025-06-19 19:03:42 +03:00
Bananymous
05836fab4c
Kernel: Allow accessing fd's inode without having read/search access
...
I have no idea what the point of this was. VFS is already verifying
read and search access
2025-06-19 19:02:28 +03:00
Bananymous
15e84f28ed
LibC: Include strings.h in string.h
2025-06-19 19:01:45 +03:00
Bananymous
32c35a822b
BuildSystem: binutils1.39->1.44, gcc12.2.0->15.1.0
2025-06-19 19:00:50 +03:00
Bananymous
9c86e5e54d
Kernel: Add ANSI SGR 39 and 49
...
Also debug log unimplemented ANSI SRGs, this makes finding missing
commonly used ANSI SGR codes more easy
2025-06-18 20:34:55 +03:00
Bananymous
87f348b48e
LibC: Fix my ugly and hacked posix_memalign
2025-06-18 14:17:17 +03:00
Bananymous
ff289b25b6
LibC: Implement {,v}asprintf
...
These were added in POSIX issue 8
2025-06-17 13:56:30 +03:00
Bananymous
a9f58e96d2
LibC: Add endian.h
...
This is part of POSIX issue 2024 and some software depends on it
2025-06-17 13:15:42 +03:00
Bananymous
c61ded8a1e
toolchain: Update gcc patch to add pthread driver
...
This makes gcc recognize -pthread argument
2025-06-17 12:49:59 +03:00
Bananymous
7651ca747d
LibC: Allow searching null char with wcschr
2025-06-16 15:09:55 +03:00
Bananymous
7ff7a4aa87
LibC: Fix locale handling in wcrtomb and mbrtowc
2025-06-16 15:09:39 +03:00
Bananymous
cdcd226b1a
LibC: Fix mbstowcs and add wcstombs
2025-06-16 15:08:49 +03:00
Bananymous
f9451915b9
LibC: Use pause in pthread spinlock locking
2025-06-16 15:07:58 +03:00