]> Projects (at) Tadryanom (dot) Me - AdrOS.git/commit
feat: implement POSIX Tiers 1-5 — complete ulibc headers, syscalls, and sync primitives
authorTulio A M Mendes <[email protected]>
Sat, 14 Mar 2026 12:54:07 +0000 (09:54 -0300)
committerTulio A M Mendes <[email protected]>
Sat, 14 Mar 2026 12:54:07 +0000 (09:54 -0300)
commitaa5474ad5a9079838650d422c48169c992723d43
tree5730d0d33ae215da1bbce736e1276d54d2162abd
parent61c2d2b8c0a2b3f4b28d41008968dcc7c69d5118
feat: implement POSIX Tiers 1-5 — complete ulibc headers, syscalls, and sync primitives

Tier 1: Add ENOTSOCK/ENETUNREACH errno codes (kernel + ulibc)

Tier 2: 13 new ulibc wrapper headers + source files:
  - sys/socket.h, netinet/in.h, arpa/inet.h, netdb.h, sys/un.h
  - sys/epoll.h, sys/inotify.h, dlfcn.h, spawn.h
  - semaphore.h, mqueue.h, aio.h, sys/shm.h
  - All with syscall wrappers matching kernel syscall numbers

Tier 3: Missing functions in existing headers:
  - termios: cfmakeraw, cfget/setispeed, tcdrain, tcflush, tcgetpgrp/tcsetpgrp
  - string: strsignal
  - stdlib: bsearch, div/ldiv, mkstemp, strtod/strtof
  - stdio: scanf, fscanf, tmpfile, tmpnam
  - unistd: execle, getlogin, confstr, sbrk, link/symlink/readlink wrappers
  - New syslog.h stub (openlog/syslog/closelog)

Tier 4: Kernel syscalls:
  - umount2 (SYSCALL_UMOUNT2=138) with vfs_umount in fs.c
  - wait4 (SYSCALL_WAIT4=139) wrapping process_waitpid + rusage

Tier 5: Medium implementations:
  - glob.h/wordexp.h with directory walk + fnmatch pattern matching
  - pthread_mutex/cond/rwlock/key/once/barrier (futex-based)
  - /etc/passwd + /etc/group file parsing with static root fallback

Build: make clean && make OK, cppcheck clean, 101/101 smoke tests pass
50 files changed:
include/errno.h
include/fs.h
include/syscall.h
src/kernel/fs.c
src/kernel/syscall.c
user/ulibc/include/aio.h [new file with mode: 0644]
user/ulibc/include/arpa/inet.h [new file with mode: 0644]
user/ulibc/include/dlfcn.h [new file with mode: 0644]
user/ulibc/include/errno.h
user/ulibc/include/glob.h [new file with mode: 0644]
user/ulibc/include/mqueue.h [new file with mode: 0644]
user/ulibc/include/netdb.h [new file with mode: 0644]
user/ulibc/include/netinet/in.h [new file with mode: 0644]
user/ulibc/include/pthread.h
user/ulibc/include/semaphore.h [new file with mode: 0644]
user/ulibc/include/spawn.h [new file with mode: 0644]
user/ulibc/include/stdio.h
user/ulibc/include/stdlib.h
user/ulibc/include/string.h
user/ulibc/include/sys/epoll.h [new file with mode: 0644]
user/ulibc/include/sys/inotify.h [new file with mode: 0644]
user/ulibc/include/sys/shm.h [new file with mode: 0644]
user/ulibc/include/sys/socket.h [new file with mode: 0644]
user/ulibc/include/sys/un.h [new file with mode: 0644]
user/ulibc/include/syscall.h
user/ulibc/include/syslog.h [new file with mode: 0644]
user/ulibc/include/termios.h
user/ulibc/include/unistd.h
user/ulibc/include/wordexp.h [new file with mode: 0644]
user/ulibc/src/aio.c [new file with mode: 0644]
user/ulibc/src/dlfcn.c [new file with mode: 0644]
user/ulibc/src/epoll.c [new file with mode: 0644]
user/ulibc/src/glob.c [new file with mode: 0644]
user/ulibc/src/inet.c [new file with mode: 0644]
user/ulibc/src/inotify.c [new file with mode: 0644]
user/ulibc/src/mqueue.c [new file with mode: 0644]
user/ulibc/src/netdb.c [new file with mode: 0644]
user/ulibc/src/pthread.c
user/ulibc/src/pwd_grp.c
user/ulibc/src/semaphore.c [new file with mode: 0644]
user/ulibc/src/shm.c [new file with mode: 0644]
user/ulibc/src/socket.c [new file with mode: 0644]
user/ulibc/src/spawn.c [new file with mode: 0644]
user/ulibc/src/stdio.c
user/ulibc/src/stdlib.c
user/ulibc/src/string.c
user/ulibc/src/syslog.c [new file with mode: 0644]
user/ulibc/src/termios.c [new file with mode: 0644]
user/ulibc/src/unistd.c
user/ulibc/src/wordexp.c [new file with mode: 0644]