Commit Graph

2677 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 4d840a8d9a BAN: Make Array more constexpr 2025-04-23 18:40:20 +03:00
Bananymous 95a80bfe81 ports: Add tinygb port
This is awesome!
2025-04-23 13:19:28 +03:00
Bananymous 53e9eab0cd ports/tcc: Fix building on 32 bit 2025-04-23 08:43:27 +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 8834241417 LibC: Fix scanf %n modifier
Old code was always returning off by one
2025-04-22 09:55:38 +03:00
Bananymous 96740d6be4 LibC: Make `inet_addr` spec compliant
I was not doing any error checking, basically i validated anything that
started with atleast a single digit.
2025-04-22 09:40:46 +03:00
Bananymous b853d29992 Kernel: Fix unix domain socket close detection 2025-04-22 08:36:44 +03:00
Bananymous 33a0f562d3 resolver: Add support for CNAME
Also rework resolver's send format and convert test-tcp and nslookup to
use getaddrinfo
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 34e680d792 ports/ncurses: Set some needed environment variables
ncurses depends on these being set to function properly
2025-04-22 01:56:34 +03:00
Bananymous 32d543943b ports: Add lynx port
I have had this for a while but apparently never commited :D
2025-04-22 01:44:49 +03:00
Bananymous 2632507980 ports/ca-certificates: Add symlink to /etc/ssl/cert.pem
Some ports try to use this file
2025-04-22 01:44:02 +03:00
Bananymous f467a9a309 resolver: Resolve hostname to loopback address
We don't currently support loopback adapters, but some ports were trying
to resolve it.
2025-04-22 00:48:26 +03:00
Bananymous 5c9710c78b LibC: Implement `strcoll_l` 2025-04-22 00:48:26 +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 028c7a822f LibC: Don't define SCHAR_MAX in locale.c 2025-04-21 22:21:40 +03:00
Bananymous 18f5f98e62 General: Mark USB hubs done in README 2025-04-21 22:13:31 +03:00
Bananymous 543bb3cc4b LibC: Rework malloc locking add proper realloc 2025-04-21 20:29:28 +03:00
Bananymous 1c44d24b76 Kernel: Fix TCP closing state machine 2025-04-21 20:02:32 +03:00
Bananymous 5305f962c0 ports/openssl: Make openssl port threaded 2025-04-21 19:59:57 +03:00
Bananymous b774f147da LibC: Implement dummy pthread_attr_{get,set}detachstate
detached threads are not yet supported, but this allows implementation
to make sure threads are joinable.
2025-04-21 19:58:01 +03:00
Bananymous 2a5921b9c9 LibC: Implement pthread_barrier
This is not fully working but should be fine for most cases
2025-04-21 19:53:38 +03:00
Bananymous 60cb392e97 LibC: Implement pthread_barrier
This is yet another bad sched_yield implementation :D
2025-04-21 19:52:14 +03:00
Bananymous d012c538c3 LibC: Add PTHREAD_SPIN_INITIALIZER
This is not posix, but current implementation allows adding this
2025-04-21 19:47:00 +03:00
Bananymous 1c88d0d7f7 LibC: Implement pthread_rwlock
This uses the same dumb sched_yield instead of actually blocking :D
2025-04-21 18:48:47 +03:00
Bananymous 773b8de8ba LibC: Refactor pthread type definitions 2025-04-21 14:38:40 +03:00
Bananymous 5d8dd090a9 LibC: Implement `pthread_once` 2025-04-21 14:17:17 +03:00
Bananymous 2cbfe70a28 DynamicLoader: Don't leak fds 2025-04-20 18:18:32 +03:00
Bananymous 16dbfbb267 LibC: Make limits.h `*_MAX` usable in #if comparisons 2025-04-20 17:15:20 +03:00
Bananymous 99fc7817c6 Kernel: Cleanup stack alignment assembly 2025-04-20 16:55:18 +03:00
Bananymous 265b4c2b22 LibC: Implement `thread_equal` 2025-04-20 03:27:16 +03:00
Bananymous db9db2cc40 LibC: Implement basic pthread mutexes
This implementation is just calling sched_yield if it could not get
mutex. This is not optimal as it does not allow the CPU to idle, but it
works for now :)

Also I did not test this code at all, but it feels correct :D
2025-04-20 03:27:16 +03:00
Bananymous 3642eabac0 LibC: Use BAN::atomic_* functions in pthread spinlock
This allows us not to reinterpret_cast pthread_spin_t to
BAN::Atomic<pthread_spin_t> which is much better :)
2025-04-20 03:11:41 +03:00
Bananymous 98e05fd179 BAN: Implement atomic functions for normal integers 2025-04-20 03:11:41 +03:00
Bananymous 1ccff9478f LibC: Don't define __tls_get_addr if TLS is disabled
This makes linking fail if something tries to use TLS :)
2025-04-20 03:11:41 +03:00
Bananymous 85f9b585f5 LibC: Don't yield on `pthread_spin_lock`
Thats kinda the whole point of spinlocks :D
2025-04-20 03:11:41 +03:00
Bananymous 01626b4c9f LibC: Add stub for `pthread_detach` 2025-04-20 03:11:41 +03:00
Bananymous a85841ca76 LibC: Add stub for `pthread_attr_setstacksize` 2025-04-20 03:11:41 +03:00
Bananymous fe6c4cd0b5 LibC: Implement POSIX TLD area (pthread_key*) 2025-04-20 03:11:41 +03:00
Bananymous f1585d09e1 LibC: Add more integer size definintions to limits.h 2025-04-19 21:50:26 +03:00
Bananymous 252784ff5b Kernel: Preserve kernel command line on fork 2025-04-19 21:29:52 +03:00