Commit Graph

310 Commits

Author SHA1 Message Date
Bananymous f1369c8fd6 Kernel/LibC: Implement mprotect
There may be some race conditions with this but i think this is good
enough to start with
2025-08-05 03:09:24 +03:00
Bananymous eb7922ab88 LibC: Implement pthread_cond_* using a futex 2025-08-05 03:09:24 +03:00
Bananymous 5940e912b3 Kernel/LibC: Implement simple futex 2025-08-05 03:09:24 +03:00
Bananymous 658a001d91 LibC: Make pthread_barrier safe
It used to deadlock and it was not safe if more threads than the target
were attempting to wait on it.
2025-08-05 03:09:24 +03:00
Bananymous 57c9f5a8a8 LibC: lock mutex when pthread_cond_timedwait times out 2025-08-05 03:09:24 +03:00
Bananymous fa7b58057c LibC: Add MAP_ANON as synonym for MAP_ANONYMOUS
This is part of POSIX issue 8 and some things only check MAP_ANON
2025-08-05 03:09:24 +03:00
Bananymous 0e0f5295cf LibC: Make {,__cxa_}atexit thread safe 2025-08-05 03:09:24 +03:00
Bananymous d25a5034db LibC: Update thread id on fork 2025-08-05 03:09:24 +03:00
Bananymous f197d39aaf LibC: Don't allow pthread_join to return EINTR 2025-08-05 03:09:24 +03:00
Bananymous 4a95343936 LibC: Make _get_uthread a macro
This allows nice inlining :)
2025-08-05 03:09:24 +03:00
Bananymous 4e705a91af LibC: Fix pthread keys
I had misunderstood how these are supposed to work :D
2025-08-05 03:09:24 +03:00
Bananymous 8c598a6902 LibC: Include stdint.h instead of inttypes.h in network headers 2025-08-05 03:09:24 +03:00
Bananymous 8e9c40caa4 LibC: Pump OPEN_MAX to 128
cmake seems to use around 70 when checking compiler. That seems quite a
lot but could be "normal"
2025-07-31 22:47:40 +03:00
Bananymous 07e4e764a0 LibC: Implement mbtowc 2025-07-31 22:47:40 +03:00
Bananymous 66fe2f2e50 LibC: Fix readv and writev 2025-07-31 22:47:40 +03:00
Bananymous fda0ced72e LibC: Implement getpw{nam,uid}_r 2025-07-31 22:47:40 +03:00
Bananymous 654e8bb7f6 LibC: Implement getgr{gid,nam}_r 2025-07-31 22:47:40 +03:00
Bananymous 80ffde5e1e LibC: Implement aligned_malloc
This is part of POSIX issue 8
2025-07-31 22:47:40 +03:00
Bananymous 52309e0754 LibC: Add in6addr_{any,loopback} definitions 2025-07-31 22:47:40 +03:00
Bananymous 31e411f8f1 LibC: Implement recvmsg and sendmsg
These just wrap recvfrom and sendto so ancillary data is not supported
2025-07-31 22:47:40 +03:00
Bananymous de45b760b5 LibC: Implement alphasort and scandir 2025-07-31 22:47:40 +03:00
Bananymous ff29e9c4d6 LibC: Implement {,f}pathconf
This just return minimum values specified by posix
2025-07-31 22:47:40 +03:00
Bananymous cc04bd0f06 LibC/Kernel: Implement ttyname_r 2025-07-31 22:47:40 +03:00
Bananymous e72e1e4e43 LibC: Add _SC_NPROCESSORS_{CONF,ONLN) 2025-07-31 22:47:40 +03:00
Bananymous e2eb555ca0 LibC: Add dummy libintl support
This doesn't really do anything but allows some ports to use it :D
2025-07-22 13:26:53 +03:00
Bananymous 8a663cb94f Kernel: Implement basic AC97 driver 2025-07-15 14:17:49 +03:00
Bananymous 163fdcd582 LibC: Fix exec family function path resolution 2025-07-15 14:17:49 +03:00
Bananymous 8aff315c7b LibC: fflush file in setvbuf before updating the buffer 2025-07-02 01:54:03 +03:00
Bananymous 3e6a4f2b16 LibC: Add getgroups stub 2025-06-28 20:25:35 +03:00
Bananymous e4f025edd6 LibC: Implement deprecated bcmp, bcopy, bzero 2025-06-28 20:25:35 +03:00
Bananymous 96f3efbf86 LibC: Fix enviroment variable allocation 2025-06-28 20:25:35 +03:00
Bananymous e8491b34b8 Kernel/LibC: Rework TIOC{G,S}WINSZ more linux like
Userspace can freely set terminal size, kernel just updates it when for
example new font is loaded. Also SIGWINCH is now sent by kernel instead
of userspace.
2025-06-28 19:40:54 +03:00
Bananymous f26a445ce6 LibC: Make malloc actually allign to s_malloc_default_align boundary 2025-06-28 16:55:13 +03:00
Bananymous d68c88c3f9 LibC: Implement rewinddir 2025-06-28 16:55:13 +03:00
Bananymous 397219c22e LibC: Implement very hacky dlopen/dlsym/dclose
If ELF loading fails, this will just crash the program :D

And there is no support for RTLD_LOCAL
2025-06-28 16:55:13 +03:00
Bananymous bc06926702 LibC: Implement gethostbyaddr 2025-06-28 16:55:13 +03:00
Bananymous 9de27110e2 LibC: Add alloca.h 2025-06-28 16:55:13 +03:00
Bananymous 93e5d09a63 Kernel/LibC: Implement flock 2025-06-28 16:55:13 +03:00
Bananymous 85f200bd86 LibC: Add sched_get_priority_{min,max}
I don't support priority scheduling so these are just no-ops
2025-06-28 16:55:13 +03:00
Bananymous 0f2c02fb04 LibC: Add stubs for pthread_{get,set}schedparam 2025-06-28 16:55:13 +03:00
Bananymous 4677d7a1c6 LibC: Update RAND_MAX INT32_MAX -> INT_MAX 2025-06-19 19:06:24 +03:00
Bananymous 15e84f28ed LibC: Include strings.h in string.h 2025-06-19 19:01:45 +03:00
Bananymous 87f348b48e LibC: Fix my ugly and hacked posix_memalign 2025-06-18 14:17:17 +03:00
Bananymous ff289b25b6 LibC: Implement {,v}asprintf
These were added in POSIX issue 8
2025-06-17 13:56:30 +03:00
Bananymous a9f58e96d2 LibC: Add endian.h
This is part of POSIX issue 2024 and some software depends on it
2025-06-17 13:15:42 +03:00
Bananymous 7651ca747d LibC: Allow searching null char with wcschr 2025-06-16 15:09:55 +03:00
Bananymous 7ff7a4aa87 LibC: Fix locale handling in wcrtomb and mbrtowc 2025-06-16 15:09:39 +03:00
Bananymous cdcd226b1a LibC: Fix mbstowcs and add wcstombs 2025-06-16 15:08:49 +03:00
Bananymous f9451915b9 LibC: Use `pause` in pthread spinlock locking 2025-06-16 15:07:58 +03:00
Bananymous 5ad7d7edb1 DynamicLoader: Fix TLS on 32 bit platform
There were two problems with my previous implementation
- TLS was not allocated if nothing used it. There is a fallback
  initialization in _init_libc, but this was not enough if one of the
  init functions tried to access errno.
- __tls_get_addr was not resolved. If __tls_get_addr was called through
  a plt entry, everything would just break :(
2025-06-06 16:27:07 +03:00