Commit Graph

110 Commits

Author SHA1 Message Date
Bananymous 4ac6cbe70e LibC: Add some missing wchar.h functions
isw* functions are just wrappers to is*
tow* functions are just wrappers to to*
2025-06-01 13:48:03 +03:00
Bananymous 31bcad2535 LibC: Implement truncate 2025-06-01 13:48:03 +03:00
Bananymous b75970958e Kernel/LibC: Implement unlinkat 2025-06-01 13:48:03 +03:00
Bananymous 91756c057e LibC: Add all of the missing POSIX definitions in unistd.h and limits.h 2025-06-01 13:48:03 +03:00
Bananymous df7f245cf8 LibC: Implement pthread_atfork
Again this code is not tested but *feels* right :D
2025-06-01 13:48:03 +03:00
Bananymous dbdefa0f4a LibC: Implement pthread cancelation
This code is not tested at all but it looks correct xD
2025-06-01 13:48:03 +03:00
Bananymous 56fdf6002c Kernel/LibC: Implement pthread_kill 2025-06-01 13:48:03 +03:00
Bananymous c957f1ddca LibC: Cleanup pthread code and add some pthread_attr functions
errno, pthread cleanup and pthread id are now stored in uthread. This
allows using these without TLS
2025-06-01 13:48:03 +03:00
Bananymous 423386a052 LibC: Add memory.h that just includes string.h
There are a lot of ports trying to include memory.h. This is not posix
but glibc just includes string.h. I think this is just to privide mem*
functionss...?
2025-06-01 13:48:03 +03:00
Bananymous b1065fa01d Kernel/LibC: Add ppoll syscall and fix poll
poll is now using its own syscall instead of wrapping aroung pselect.
This adds less overhead on top of poll and adds support for POLLHUP
2025-06-01 13:48:03 +03:00
Bananymous 1bd454b8fd Kernel/LibC: Implement utime* family functions
This patch adds *working*
 - utime
 - utimes
 - utimensat
 - futimens
2025-06-01 13:48:03 +03:00
Bananymous e0d986dcd7 LibC: Add missing u_char and u_short types 2025-05-28 03:10:01 +03:00
Bananymous c7be3dcd5b LibC: Add timer{add,sub,clear,isset,cmp}
These are not POSIX but used by used by some ports
2025-05-28 03:10:01 +03:00
Bananymous 89c9bfd052 Kernel/LibC: Implement `socketpair` for UNIX sockets 2025-05-28 03:10:01 +03:00
Bananymous 12b93567f7 Kernel/LibC: Implement `getpeername` 2025-05-28 03:10:01 +03:00
Bananymous 8aa4e4ff1e LibC: Implement `clearenv`
This is GNU extension but seems nice to have :D
2025-05-28 03:10:01 +03:00
Bananymous 44b762f916 Kernel/LibC: Implement pwrite and make pread non-locking 2025-05-28 03:10:01 +03:00
Bananymous 0f0accf82c LibC: Don't use `false` in pthread initializers 2025-05-28 03:10:01 +03:00
Bananymous ddcf414107 LibC: Fix netinet/in.h and arpa/inet.h definitions 2025-05-28 03:10:01 +03:00
Bananymous 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
Bananymous 82f4975f45 LibC: Save callee saved registers on setjmp 2025-05-04 13:54:35 +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 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 16dbfbb267 LibC: Make limits.h `*_MAX` usable in #if comparisons 2025-04-20 17:15:20 +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 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 6f9dc2a9b8 Kernel/LibC: Implement `fchdir`, cleanup `chdir` and `getcwd` 2025-04-19 21:28:31 +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 ab4dd6a268 LibC: Add ARG_MAX constant 2025-04-19 00:39:42 +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 4bcd3ed86f Kernel: Start working on TLS, add SYS_{SET,GET}_TLS 2025-04-15 23:31:17 +03:00
Bananymous 64002626b9 LibC: Add h_addr definition for hostent backwards compatibility 2025-04-15 21:39:50 +03:00
Bananymous be786be67d Kernel/LibC: Implement pthread_join 2025-04-02 12:58:39 +03:00
Bananymous f32f62dfc1 LibC: Implement pthread_spin_* functions 2025-04-02 12:58:39 +03:00
Bananymous 28392050bf LibC: Make pthread_t pid_t 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 2ba25b4c28 LibC: Add non standard types/values used by ports 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 48eca3d031 LibC: Make libc usable with tcc
tcc does not provide its own stdint.h but defines everything in
stddef.h. Also tcc does not support [[noreturn]] attribute syntax.
2025-01-28 17:27:41 +02:00
Bananymous 9893c90e74 Kernel: Remove SYS_DUP and implement it using fcntl F_DUPFD 2025-01-17 19:29:47 +02:00