Bananymous
8da4f80453
Kernel: Add custom stack to double fault handler
...
This prevents triple faults!
2025-07-02 23:14:52 +03:00
Bananymous
6084aae603
Kernel: Add guard pages to kernel and userspace stacks
2025-07-02 23:12:36 +03:00
Bananymous
e1319a06f2
Kernel: Remove accidentally commited debug prints
2025-07-02 23:09:57 +03:00
Bananymous
51fd7a607d
Kernel: Fix IDE controller waiting
...
We did not correctly wait until controller is ready to receive data on
write command. Also remove possible kernel panic if controller sends
unexpected interrupts
2025-07-02 22:04:41 +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
ebf2b16d09
Kernel: Implement chown to ext2 and tmpfs
2025-06-28 21:28:54 +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
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
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
05a727979a
Kernel: Make sse initialization thread safe
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
4695fa061d
Kernel: Don't panic if UNIX socket is already bound but deleted
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
93e5d09a63
Kernel/LibC: Implement flock
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
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
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
125f8b591d
Kernel: Don't crash if socket tries to reconnect
...
:D
2025-06-11 01:54:41 +03:00
Bananymous
e92f039a17
Kernel: Fix tcp sending with already sent unacknowledged bytes
2025-06-06 11:55:44 +03:00
Bananymous
ef76ffa1c1
Kernel: Remove unnecessary hack
...
This is no longer needed as thread unlocks its spinlock before calling
Process::exit() on terminating signal
2025-06-06 11:13:55 +03:00
Bananymous
652eb2346c
Kernel: Fix syscall interrupt disabling
...
If thread had a terminating signal, syscall leaving would try to lock
process's mutex while not having interrupts enabled
2025-06-06 11:12:48 +03:00
Bananymous
66726090ec
Kenrel: Fix TCP connection closing
...
If TCP socket was connected with connect() instead of accept() it would
never send FIN to other end when it was closed.
2025-06-06 11:10:29 +03:00
Bananymous
b668173cba
Kernel: Fix pseudo terminal writability
2025-06-06 11:09:50 +03:00
Bananymous
c6ded82406
Kernel: Fix a deadlock when thread is executing terminating signal
2025-06-06 06:52:27 +03:00
Bananymous
a76c6faffc
Kernel: Fix a deadlock when process is exiting
2025-06-06 06:52:02 +03:00
Bananymous
81ff71a97f
Kernel: Track the number of recursive spinlocks a thread is holding
2025-06-06 06:51:15 +03:00
Bananymous
56db0efe58
Kernel: Add missing file for race condition fixes :)
2025-06-06 04:03:37 +03:00
Bananymous
5eefd98e1b
Kernel: Add debugging macro to dump syscalls that take a long time
2025-06-06 04:00:57 +03:00