Bananymous
8e0a56b49a
Kernel: Implement loopback network interface
2025-05-13 10:16:21 +03:00
Bananymous
a8844ddd28
WindowServer: Send mouse release to same window as mouse press
2025-05-13 10:16:21 +03:00
Bananymous
c18fefd5f3
BuildSystem: Cleanup cmake library linking
2025-05-07 18:42:37 +03:00
Bananymous
3040940e35
ports/tcc: Fix 32 bit build and add version name
...
tcc was using "Linux" for machine name in version string if it was not
explicitly specified.
2025-05-07 18:33:39 +03:00
Bananymous
df3d2d57c3
ports/quake2: Update to new LibGUI interface
2025-05-07 17:23:15 +03:00
Bananymous
92d26f2216
ports/doom: Update to new LibGUI interface
2025-05-07 17:21:29 +03:00
Bananymous
0380c68f89
ports/tinygb: Update to new LibGUI interface
2025-05-07 17:21:29 +03:00
Bananymous
2a6dc6a7b7
LibGUI: Add missing Texture files
2025-05-07 17:21:29 +03:00
Bananymous
40617f0d5c
WindowServer: Make mod+d open program launcher
2025-05-06 00:42:15 +03:00
Bananymous
09745a7835
userspace: Implement program launcher
...
This is kinda useless as I only have Terminal and test-window
implemented. Also the code is really messy as I don't have GUI widgets.
2025-05-06 00:41:22 +03:00
Bananymous
57f6f50939
Terminal: Implement dumb font bolding
...
This is just drawing character twice at one pixel offset
2025-05-05 23:09:53 +03:00
Bananymous
f959905adf
LibGUI: Rework window rendering
...
Abstract drawing surface to Texture. All windows now contain a texture
matching its size.
2025-05-05 23:08:01 +03:00
Bananymous
f78c7e7926
LibGUI: Add API to block until window events are available
2025-05-05 22:33:00 +03:00
Bananymous
96496da0ab
Kernel: Allow USB mouse to send extra2 button events
2025-05-05 22:32:26 +03:00
Bananymous
2dc4733ac1
test: improve pthread test
2025-05-05 19:21:47 +03:00
Bananymous
f14774d034
libc: fix tmpnam when no name is found
2025-05-05 19:17:16 +03:00
Bananymous
c08c63f420
libc: reorder destructor and fflush in exit
2025-05-05 19:16:52 +03:00
Bananymous
eb79c6c47c
mkdir: Add -p option
2025-05-05 19:16:29 +03:00
Bananymous
bf1cbb4cde
Terminal: Update terminal size and send SIGWINCH on resize
2025-05-05 19:09:21 +03:00
Bananymous
592675022e
Kernel: Allow tcgetpgrp on pseudo terminal masters
2025-05-05 19:09:01 +03:00
Bananymous
b2e10d7e6e
Kernel: Remove unnecessary locks
2025-05-05 19:08:57 +03:00
Bananymous
0689954433
Terminal: Set minimum size to 8x2 cells
2025-05-05 18:20:22 +03:00
Bananymous
5c37f198cb
WindowServer/LibGUI: Allow windows to set minimum size
2025-05-05 18:19:59 +03:00
Bananymous
3b02a9d4fe
WindowServer: Resize from closest corner
2025-05-05 18:19:19 +03:00
Bananymous
c9057aa498
WindowServer: Cleanup code and resize on fullscreen
2025-05-05 16:42:15 +03:00
Bananymous
2b0d198b05
Terminal: Allow resizing of the terminal
2025-05-05 03:15:30 +03:00
Bananymous
7798145c74
WindowServer: Implement window resizing
...
windows can now set resizable attribute which allows window server to
resize them
2025-05-05 03:14:50 +03:00
Bananymous
fcfadd7c74
LibGUI: Add background color for windows
...
This is used when resizing a window to fill the empty space
2025-05-05 03:12:31 +03:00
Bananymous
c0181820a9
ports/tinygb: Set title like sdl frontend does
2025-05-05 01:10:41 +03:00
Bananymous
76d4e6bd18
LibGUI: Add support for changing window title
2025-05-05 01:10:05 +03:00
Bananymous
ccb81de85d
snake: Use box drawing characters
...
This makes it look much better.
Also fix bug with apples generating on top of snake's tail
2025-05-05 00:30:58 +03:00
Bananymous
82f4975f45
LibC: Save callee saved registers on setjmp
2025-05-04 13:54:35 +03:00
Bananymous
d457e6ad6a
LibC: Fix printf e/E modifier for negative exponents
2025-05-04 13:42:17 +03:00
Bananymous
abf7c8e68a
LibC: Implement difftime
2025-05-04 13:42:17 +03:00
Bananymous
1a38d0c31e
LibC: Add g/G modifiers to printf
2025-05-04 13:42:17 +03:00
Bananymous
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
Bananymous
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
Bananymous
006a196e4a
LibC: optimize strpbrk, str{,c}spn, strtok{,_r}
...
These matches are now detected with bitmasks instead of looping over the
second string
2025-04-24 01:39:49 +03:00
Bananymous
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
Bananymous
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
Bananymous
73f9de6635
Terminal: Add support for ANSI SGR 8bit and 24bit
2025-04-23 22:03:53 +03:00
Bananymous
12b9c82086
Terminal: Don't wrap cursor right after x == cols
...
This prevents scrolling when bottom right scroll is written to
2025-04-23 22:03:53 +03:00
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