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
Bananymous
6f9dc2a9b8
Kernel/LibC: Implement fchdir, cleanup chdir and getcwd
2025-04-19 21:28:31 +03:00
Bananymous
7edfae8583
Shell: Cleanup export builtin
2025-04-19 21:23:26 +03:00
Bananymous
28275d86ea
LibC/Shell: set PWD env in Shell, not libc
...
I have no idea why I was doing it in the libc
2025-04-19 21:16:11 +03:00
Bananymous
2d19b5074e
LibC: Implement some missing wchar functions
2025-04-19 20:56:41 +03:00
Bananymous
e62cc17797
LibC: Use nl_langinfo for strings in strftime
2025-04-19 20:03:56 +03:00
Bananymous
407eed212a
LibC: Implement nl_langinfo
...
All values are from POSIX locale except CODESET which can be "UTF-8"
depending on the current locale
2025-04-19 20:02:01 +03:00
Bananymous
12d47858c1
LibC: Fix overflow error in fread and fwrite
2025-04-19 18:42:12 +03:00
Bananymous
3d34e6e6d9
ports: ncurses add support for shared libraries
2025-04-19 05:55:16 +03:00
Bananymous
dc188e601a
LibC: Add definition for LOG_UPTO
2025-04-19 02:48:21 +03:00
Bananymous
8a2df23260
LibC: Define RLIM_NLIMITS
2025-04-19 02:34:56 +03:00
Bananymous
46079a8612
LibC: Implement no-op posix_madvice
...
Also add non-posix prefixed definitions
2025-04-19 02:07:45 +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
8cd2d772b0
Shell: Print error if execv fails
2025-04-19 00:39:42 +03:00
Bananymous
2ff3f88b4d
LibC: Add support for shebangs
...
I implemented shebangs in userspace as I don't really see the benefit of
doing it in kernel space. Only benefit I can think of is executing non
readable scripts but I don't really see the benefit in that.
2025-04-19 00:39:42 +03:00
Bananymous
ab4dd6a268
LibC: Add ARG_MAX constant
2025-04-19 00:39:42 +03:00
Bananymous
0094efc7f4
LibC: Fix execl* memory leak on error
2025-04-18 20:54:53 +03:00
Bananymous
d73a270fb1
Shell: Save and restore stdin flags after child returns
...
If child makes stdin nonblocking, Shell now restores it back to "normal"
flags
2025-04-18 18:26:09 +03:00
Bananymous
d9647868cc
Terminal: Fix ANSI SGR color invert
2025-04-18 17:32:24 +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
4409d0f03f
Terminal: Implement ANSI CSI A, B, b, d, @
2025-04-17 23:16:22 +03:00
Bananymous
ebd00b1eb2
Terminal: Implement ANSI SGR 10, 39, 49
2025-04-17 23:15:44 +03:00
Bananymous
3ca0ef1583
LibGUI: Add copy_rect API
...
This allows moving parts of window around
2025-04-17 23:14:46 +03:00
Bananymous
88abbd90dc
LibC: Fix strncat
...
strncat was using strncpy internally which nullpadded dest until n bytes
were written.
also there was no terminating null byte added if src was shorter than n
bytes
2025-04-17 23:12:40 +03:00
Bananymous
bdbde25784
LibC: Rewrite environ handling
...
environ is only allocated on heap when you insert new variables.
environment variables are only `free`'d if they are `malloc`'d by libc
2025-04-16 21:08:01 +03:00
Bananymous
ee9e941a56
LibC: Implement getitimer
2025-04-15 23:35:25 +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
254fd80088
DynamicLoader: Cleanup and prepare for TLS
2025-04-15 23:31:17 +03:00
Bananymous
d7e6df1e44
LibELF: Add definitions for ELF TLS values
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
e6026cb0b8
DynamicLoader: Handle circular dependencies
2025-04-15 23:05:52 +03:00
Bananymous
cc2b4967ea
LibC: Make malloc thread safe with pthread_spinlock
2025-04-15 23:05:52 +03:00
Bananymous
cf59f89bfb
LibC: Rework constructor/destructor calling
...
constructors are now called in _init_libc instead of crt0
destructors are now registered with atexit() instead of called manually
2025-04-15 23:05:52 +03:00
Bananymous
066ed7e4a1
LibC: merge atexit and __cxa_atexit into common function
2025-04-15 23:05:52 +03:00
Bananymous
4f49d60e4a
DynamicLoader/LibC: lazy malloc environ
...
This allows DynamicLoader to just set the value of global environ symbol
without libc needing to malloc it at startup
2025-04-15 23:05:52 +03:00