Commit Graph

1520 Commits

Author SHA1 Message Date
Bananymous a8edb8870e Kernel: Add support for 8bit and 24bit ANSI SGR 2025-04-23 22:03:53 +03:00
Bananymous 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
Bananymous 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
Bananymous 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
Bananymous 20e17a28cf Kernel: Fix \b handling
Don't clear the character, only move cursor backwards
2025-04-23 06:33:11 +03:00
Bananymous 28bf2d6374 Kernel/Terminal: Add support for ANSI DSR 2025-04-23 06:14:56 +03:00
Bananymous 8a00b53050 Kernel/Terminal: Fix ANSI SGR m for multiple values 2025-04-23 05:29:22 +03:00
Bananymous b853d29992 Kernel: Fix unix domain socket close detection 2025-04-22 08:36:44 +03:00
Bananymous 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
Bananymous c790bad667 Kernel: Make OpenFileDescriptorSet thread safe
Also this allows concurrent calling of read/write/send/recv
2025-04-22 04:31:18 +03:00
Bananymous 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
Bananymous 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
Bananymous 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
Bananymous 1c44d24b76 Kernel: Fix TCP closing state machine 2025-04-21 20:02:32 +03:00
Bananymous 99fc7817c6 Kernel: Cleanup stack alignment assembly 2025-04-20 16:55:18 +03:00
Bananymous 252784ff5b Kernel: Preserve kernel command line on fork 2025-04-19 21:29:52 +03:00
Bananymous 6f9dc2a9b8 Kernel/LibC: Implement `fchdir`, cleanup `chdir` and `getcwd` 2025-04-19 21:28:31 +03:00
Bananymous 201d752850 Kernel: Allow pipe to write partial data
This allows potential blocking
2025-04-19 00:39:42 +03:00
Bananymous 63b3d9875d Kernel: Fix `Thread::block_with_eintr*` functions
I was using wrong block function, `block_with_timeout` instead of
`block_with_wake_time`. This caused functions to block way too long and
caused a lot of hangs.
2025-04-19 00:39:42 +03:00
Bananymous 85505b0482 Kernel: Fix ANSI SGR color invert 2025-04-18 17:31:46 +03:00
Bananymous 703c1a485c Kernel: Fix Ext2 bug for big files
My ext2 implementation was reading wrong blocks for very big block
indices.
2025-04-18 04:17:31 +03:00
Bananymous 9258c73484 Kernel: Optimize VTTY cursor rendering
cursor is now only updated once after all consecutive `putchar`s are
handled.
2025-04-18 03:55:56 +03:00
Bananymous 6858546ce9 Kernel: Fix rendering bugs with framebuffer cursor 2025-04-18 03:54:17 +03:00
Bananymous 7c6966a9c4 Kernel: Add support for text mode terminal
This probably won't be used at all but it was so simple and made me do
really nice refactorings so i decided to add it :)
2025-04-18 02:45:06 +03:00
Bananymous 40d1d20cd6 Kernel: Move cursor handling from TTY -> TerminalDriver 2025-04-18 02:43:41 +03:00
Bananymous c0942d78cb Kernel: Fix TTY ANSI ? handling 2025-04-18 02:42:49 +03:00
Bananymous cef8779bf7 Kernel: Improve error handling when setting TTY font 2025-04-18 02:42:24 +03:00
Bananymous d6667844de Kernel: Fix fcntl F_SETFL and masking 2025-04-18 02:37:44 +03:00
Bananymous 4cdf218145 Kernel: Don't allow opening file with path "" 2025-04-18 02:37:16 +03:00
Bananymous 994713d04c Kernel: Implement FramebufferDevice::get_pixel() 2025-04-18 02:35:28 +03:00
Bananymous 554b13ac50 Kernel: Restructure terminal initialization
This is still very ugly and will be rewritten in the future :D
2025-04-18 01:19:59 +03:00
Bananymous 439fb57d88 Kernel: Fix ANSI CSI @ and b for VirtualTTY 2025-04-17 23:24:17 +03:00
Bananymous ac90800c3c Kernel/LibC/DynamicLoader: Implement thread local storage
For some reason this does not work on 32 bit version, so it is disabled
on that platform. I'll have to look into it later to find the bug :)
2025-04-15 23:33:39 +03:00
Bananymous 08f5833ca8 Kernel/LibC: Implement pthread_attr_init 2025-04-15 23:31:17 +03:00
Bananymous 4bcd3ed86f Kernel: Start working on TLS, add SYS_{SET,GET}_TLS 2025-04-15 23:31:17 +03:00
Bananymous a933fabb86 Kernel: Define constant USERSPACE_END
This should be used for userspace generic allocations. Currently I used
KERNEL_OFFSET, but I want to limit userspace to the actual lower half of
the address space
2025-04-15 23:31:17 +03:00
Bananymous 36baf7b0af Kernel/LibC/DynamicLoader: Update process start ABI
We now use SysV abi for process startup
2025-04-15 23:05:52 +03:00
Bananymous 4b1c20fa36 Kernel: Make SYS_{,P}READ work with count == 0 2025-04-15 21:36:00 +03:00
Bananymous 00015285ab Kernel: Add vaddr->paddr getter to VirtualRange 2025-04-15 21:25:15 +03:00
Bananymous 0f936fc163 Kernel: Cleanup 32 bit interrupt stack alignment 2025-04-15 21:21:23 +03:00
Bananymous 15045cc486 Kernel: Make nonblocking sockets unblocking :) 2025-04-05 18:42:02 +03:00
Bananymous c9132d984b Kernel: Fix TCP window scaling 2025-04-05 18:40:23 +03:00
Bananymous a0123e7c2d Kernel: save and load sse context in more spaces 2025-04-02 12:58:39 +03:00
Bananymous be786be67d Kernel/LibC: Implement pthread_join 2025-04-02 12:58:39 +03:00
Bananymous 9066e62a97 Kernel/LibC: Implement sched_yield 2025-04-02 12:58:39 +03:00
Bananymous 5549696c3a Kernel/LibC: Implement pthread_self 2025-04-02 02:39:29 +03:00
Bananymous 9fb161c320 Kernel: Move thread stacks 1 MiB back 2025-04-01 23:26:13 +03:00
Bananymous c1618e2b5d Kernel/LibC: Add basic support for pthread_{create,exit} 2025-04-01 23:26:13 +03:00
Bananymous 36026d4ec6 Kernel: Cleanup TCP and add basic window scaling support 2025-04-01 23:09:30 +03:00
Bananymous 96767f5ca8 Kernel: Implement PCI interrupt routing
This does not really work but I have no idea what I'm doing wrong
2025-04-01 23:09:30 +03:00