Commit Graph

366 Commits

Author SHA1 Message Date
8aa4e4ff1e LibC: Implement clearenv
This is GNU extension but seems nice to have :D
2025-05-28 03:10:01 +03:00
7eade002a7 LibC: Fix mktime
yday calculation was off so results were always off for march-december
2025-05-28 03:10:01 +03:00
a8f8d27f4e LibC: Implement basic tzset()
I still don't have timezone support so this just sets values to UTC
2025-05-28 03:10:01 +03:00
356935bd4f LibC: Fix strtou{,l,ll} for negative values
Also set endp if base is invalid
2025-05-28 03:10:01 +03:00
bce3dd045f LibC: Fix strncat return value 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
5d80c880c8 LibC: Fix FILE buffering once again :D 2025-05-28 03:10:01 +03:00
b907263f35 LibC: Implement basic tmpfile 2025-05-28 03:10:01 +03:00
0f0accf82c LibC: Don't use false in pthread initializers 2025-05-28 03:10:01 +03:00
ddcf414107 LibC: Fix netinet/in.h and arpa/inet.h definitions 2025-05-28 03:10:01 +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
c18fefd5f3 BuildSystem: Cleanup cmake library linking 2025-05-07 18:42:37 +03:00
2a6dc6a7b7 LibGUI: Add missing Texture files 2025-05-07 17:21:29 +03:00
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
f78c7e7926 LibGUI: Add API to block until window events are available 2025-05-05 22:33:00 +03:00
f14774d034 libc: fix tmpnam when no name is found 2025-05-05 19:17:16 +03:00
c08c63f420 libc: reorder destructor and fflush in exit 2025-05-05 19:16:52 +03:00
5c37f198cb WindowServer/LibGUI: Allow windows to set minimum size 2025-05-05 18:19:59 +03:00
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
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
76d4e6bd18 LibGUI: Add support for changing window title 2025-05-05 01:10:05 +03:00
82f4975f45 LibC: Save callee saved registers on setjmp 2025-05-04 13:54:35 +03:00
d457e6ad6a LibC: Fix printf e/E modifier for negative exponents 2025-05-04 13:42:17 +03:00
abf7c8e68a LibC: Implement difftime 2025-05-04 13:42:17 +03:00
1a38d0c31e LibC: Add g/G modifiers to printf 2025-05-04 13:42:17 +03:00
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
8834241417 LibC: Fix scanf %n modifier
Old code was always returning off by one
2025-04-22 09:55:38 +03:00
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
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
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
5c9710c78b LibC: Implement strcoll_l 2025-04-22 00:48:26 +03:00
028c7a822f LibC: Don't define SCHAR_MAX in locale.c 2025-04-21 22:21:40 +03:00
543bb3cc4b LibC: Rework malloc locking add proper realloc 2025-04-21 20:29:28 +03:00
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
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
60cb392e97 LibC: Implement pthread_barrier
This is yet another bad sched_yield implementation :D
2025-04-21 19:52:14 +03:00
d012c538c3 LibC: Add PTHREAD_SPIN_INITIALIZER
This is not posix, but current implementation allows adding this
2025-04-21 19:47:00 +03:00
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
773b8de8ba LibC: Refactor pthread type definitions 2025-04-21 14:38:40 +03:00
5d8dd090a9 LibC: Implement pthread_once 2025-04-21 14:17:17 +03:00
16dbfbb267 LibC: Make limits.h *_MAX usable in #if comparisons 2025-04-20 17:15:20 +03:00
265b4c2b22 LibC: Implement thread_equal 2025-04-20 03:27:16 +03:00
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
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
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
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
01626b4c9f LibC: Add stub for pthread_detach 2025-04-20 03:11:41 +03:00
a85841ca76 LibC: Add stub for pthread_attr_setstacksize 2025-04-20 03:11:41 +03:00
fe6c4cd0b5 LibC: Implement POSIX TLD area (pthread_key*) 2025-04-20 03:11:41 +03:00
f1585d09e1 LibC: Add more integer size definintions to limits.h 2025-04-19 21:50:26 +03:00