30074c290d
Kernel: Add more descriptive names to sockets types
2025-06-01 13:48:03 +03:00
60d1c26114
Kernel: Fix race condition in FileBackedRegion creation
2025-06-01 13:48:03 +03:00
692ba43182
Kernel: Fix spinlock bugs found by the new spinlock security
2025-06-01 13:48:03 +03:00
6542a037df
Kernel: Make spinlocks more safe
...
Kernel now makes sure thread is not holding any spinlocks when it tries
to lock a mutex or yield. Spinlocks are supposed to be only used for
short times without the possibility of yielding
2025-06-01 13:48:03 +03:00
9f4b451501
Kernel: Fix epoll deadlock
...
If epoll_wait and epoll_notify were called at the same time, there was a
possible deadlock when epoll was confirming the event from the inode
2025-06-01 13:48:03 +03:00
1bd454b8fd
Kernel/LibC: Implement utime* family functions
...
This patch adds *working*
- utime
- utimes
- utimensat
- futimens
2025-06-01 13:48:03 +03:00
cd5b351ce4
Kernel: Fix fchmodat mode handling
...
Ignore file type bits instead of returning EINVAL if they are set
2025-05-29 03:24:31 +03:00
4d4fb3b6ec
Kernel: Cleanup and fix pipe
...
pipe now sends SIGPIPE and returns EPIPE when writing and no readers are
open
2025-05-29 01:02:22 +03:00
89c9bfd052
Kernel/LibC: Implement socketpair for UNIX sockets
2025-05-28 03:10:01 +03:00
12b93567f7
Kernel/LibC: Implement getpeername
2025-05-28 03:10:01 +03:00
2f37776614
Kernel: Notify epoll on new TCP connections
2025-05-28 03:10:01 +03:00
f778bca3f2
Kernel: Remove accidentally commited debug code :)
2025-05-28 03:10:01 +03:00
a945d19750
Kernel: Partially fix PCI PIN interrupt routing
...
Don't fail early if the first device is not the one we are looking for
2025-05-28 03:10:01 +03:00
7f04b2c96c
Kernel: Fix E1000 interrupt handling
...
E1000 does not support MSI-X and thus does not generate RxQ0 interrupts.
2025-05-28 03:10:01 +03:00
79a2b84c81
Kernel: Fix process exit when there are multiple threads
2025-05-28 03:10:01 +03:00
44b762f916
Kernel/LibC: Implement pwrite and make pread non-locking
2025-05-28 03:10:01 +03:00
6be3b1d7f2
commit from banan-os :D
2025-05-27 23:57:43 +00:00
0e0d7016b3
Kernel: Rename has_hangup -> has_hungup
2025-05-17 12:39:23 +03:00
553c76ab0f
Kernel: Add locking to inode's epoll list
...
This was prone to crashing :)
2025-05-17 12:36:36 +03:00
d1bb72f6fb
Kernel: Don't allow CPU load printing underflow
2025-05-13 10:19:13 +03:00
1bcd1edbf5
Kernel/LibC: Implement basic epoll
...
This implementation is on top of inodes instead of fds as linux does it.
If I start finding ports/software that relies on epoll allowing
duplicate inodes, I will do what linux does.
I'm probably missing multiple epoll_notify's which may cause hangs but
the system seems to work fine :dd:
2025-05-13 10:18:05 +03:00
143a00626b
Kernel: Fix fork cmdline copying and copy environ
2025-05-13 10:16:21 +03:00
0eb981f51c
Kernel: Fix Random.h includes
2025-05-13 10:16:21 +03:00
6cc01349f7
Kernel: Fix unblocking recv through read
2025-05-13 10:16:21 +03:00
a7bd4acd46
Kernel: Remove static variables from virtual tty
2025-05-13 10:16:21 +03:00
8e0a56b49a
Kernel: Implement loopback network interface
2025-05-13 10:16:21 +03:00
96496da0ab
Kernel: Allow USB mouse to send extra2 button events
2025-05-05 22:32:26 +03:00
592675022e
Kernel: Allow tcgetpgrp on pseudo terminal masters
2025-05-05 19:09:01 +03:00
b2e10d7e6e
Kernel: Remove unnecessary locks
2025-05-05 19:08:57 +03:00
9ff9d679e9
Kernel: Fix text mode cursor
...
Apparently text mode renders cursor in the *foreground* color. My
current clear function used the same color for foreground and background
making the cursor effectively invisible.
Also cursor hiding is now done by moving the cursor off bounds (0, height)
some website I read said this to be valid even on VGA compatible cards
without disable bit.
http://www.osdever.net/FreeVGA/vga/textcur.htm
2025-04-25 02:31:33 +03:00
9f3f8f950a
Kernel: Add better panic message for failed shutdown
...
ACPI shutdown does not work on the web emulator and running `poweroff`
crashes on `ASSERT_NOT_REACHED()`.
2025-04-25 01:52:33 +03:00
418678466c
Kernel: Fix text mode palette
...
ANSI and text mode color indices are not in the same order
2025-04-23 23:07:47 +03:00
9f4cb5c4dd
Kernel: Make pseudo terminals not overwrite old data
...
If pseudo terminal buffer was filled, old implementation would overwrite
old data. This is bad if producer is capable of producing more data than
consumer can handle.
2025-04-23 22:03:53 +03:00
a8edb8870e
Kernel: Add support for 8bit and 24bit ANSI SGR
2025-04-23 22:03:53 +03:00
dabc3c6cc4
Kernel: Don't wrap cursor immediatly at cols()
...
This prevents unwanted scrolling when writing to bottom right cell
2025-04-23 22:03:53 +03:00
cc7c1ad30d
Kernel: Add per terminal palette for TerminalDriver
...
This allows better color approximation on text mode and in future will
allow user to possibly change the palette
2025-04-23 18:44:37 +03:00
35b3c3c98c
Kernel: Fix scheduler load balancing
...
I was not updating the current queue of the thread which lead to blocked
threads think they were in run queue
2025-04-23 08:09:51 +03:00
20e17a28cf
Kernel: Fix \b handling
...
Don't clear the character, only move cursor backwards
2025-04-23 06:33:11 +03:00
28bf2d6374
Kernel/Terminal: Add support for ANSI DSR
2025-04-23 06:14:56 +03:00
8a00b53050
Kernel/Terminal: Fix ANSI SGR m for multiple values
2025-04-23 05:29:22 +03:00
b853d29992
Kernel: Fix unix domain socket close detection
2025-04-22 08:36:44 +03:00
f8e3ae0525
Kernel: Fix deadlock caused by multithreading
...
This allows multiple threads to concurrently call the most common
blocking syscalls:
- read
- write
- accept
- connect
- sendto
- recv
- pselect
This prevents a dead lock when for example process is waiting on a pipe,
but unable to write to it since process is locked.
This is the beginning of starting to remove processes own lock from
syscall and locking only necessary parts.
2025-04-22 04:51:53 +03:00
c790bad667
Kernel: Make OpenFileDescriptorSet thread safe
...
Also this allows concurrent calling of read/write/send/recv
2025-04-22 04:31:18 +03:00
d54489bbcb
Kernel: Implement MemoryRegion pinning
...
This allows process to pin a MemoryRegion into users memory space for
syscall duration without allowing user to munmap the region.
2025-04-22 04:30:07 +03:00
808c97020a
Kernel/LibC: Implement SA_RESTART
...
I have been thinking how to do this for a long time but I finally
figured out a semi-clean way
2025-04-22 02:42:44 +03:00
107b31a0b5
Kernel: Fix E1000{,E} driver for older qemu versions
...
This patch adds clearing of *Interrupt Cause Registers*, which allows
older qemu versions to send new interrupts. Apparently this is not
needed on newer releases.
2025-04-22 00:31:13 +03:00
1c44d24b76
Kernel: Fix TCP closing state machine
2025-04-21 20:02:32 +03:00
99fc7817c6
Kernel: Cleanup stack alignment assembly
2025-04-20 16:55:18 +03:00
252784ff5b
Kernel: Preserve kernel command line on fork
2025-04-19 21:29:52 +03:00
6f9dc2a9b8
Kernel/LibC: Implement fchdir, cleanup chdir and getcwd
2025-04-19 21:28:31 +03:00