git.cappig.dev / apheleiaOS.git master

736825e2658a39fb3eb7ee160d9fbf0eb7ad03f9 master
cappig <[email protected]> ยท 4 months ago
Restructure userland tree and expand POSIX runtime surface

* Replace the legacy user/ layout with userland/{core,ui,tools,games} and a new build pipeline that supports category selection, installs SDK headers/runtime into /usr, stages full root tree content, and bumps release metadata to alpha-0.3.

* Add new userspace programs and major app updates (cp, clear, tty, less, top, Doom port integration, plus refreshed sh, vi, term, fetch, id/groups/login/su/uname/uptime) while keeping renamed binaries wired into the image.

* Expand kernel/userspace file and process primitives with SYS_FCNTL/SYS_READLINK, CLOEXEC-aware FD tracking on open/dup/exec, read(2)-backed directory iteration, improved symlink handling, and broader openat/*at/execvp/sysconf libc wrappers.

* Grow libc toward POSIX coverage with new headers (posix.h, sys/select.h, sys/time.h, sys/times.h, sys/resource.h, sys/utsname.h, etc.) plus implementations for select, sigaction/sigprocmask/sigpending, gettimeofday, times, uname, fdopen/remove/setvbuf/fileno/ungetc, and string/math additions (bcopy/bzero/index/rindex/strstr, ldexpl).

* Harden low-level runtime paths and UI plumbing with per-core GDT/TSS + CPU-local lookup fixes, PMM/heap/phys-window locking updates, PS/2 mouse wheel support, richer proc/devfs scheduler stats, and WS/UI title + input event queue improvements.
210 files changed, 22690 insertions, 17468 deletions
kernel/arch/arch.h +1 -0
kernel/arch/x86/arch.c +14 -0
kernel/arch/x86/build/build.mk +12 -17
kernel/arch/x86/drivers/ps2.c +65 -0
kernel/arch/x86/gdt.c +88 -36
kernel/arch/x86/irq.c +3 -3
kernel/arch/x86/mm/heap.c +10 -4
kernel/arch/x86/mm/phys_window.c +104 -8
kernel/arch/x86/mm/physical.c +58 -9
kernel/sched/scheduler.c +40 -2
kernel/sched/scheduler.h +6 -0
kernel/sys/cpu.c +22 -7
kernel/sys/devfs.c +26 -8
kernel/sys/exec.c +1 -0
kernel/sys/lock.h +1 -1
kernel/sys/procfs.c +35 -1
kernel/sys/syscall.c +234 -84
kernel/sys/vfs.c +29 -9
kernel/sys/vfs.h +1 -0
kernel/sys/ws.c +30 -0
libs/apheleia/syscall.h +32 -31
libs/gui/draw.c +10 -3
libs/gui/ui.c +86 -21
libs/gui/ui.h +4 -2
libs/gui/ws.h +1 -0
libs/input/mouse.h +1 -0
libs/libc/fcntl.h +21 -0
libs/libc/libgen.h created
libs/libc/math.c +19 -0
libs/libc/math.h +1 -0
libs/libc/posix.h created
libs/libc/signal.h +50 -21
libs/libc/stdio.h +10 -0
libs/libc/stdlib.c +260 -51
libs/libc/stdlib.h +29 -3
libs/libc/string.c +46 -0
libs/libc/string.h +1 -0
libs/libc/strings.h created
libs/libc/sys/ioctl.h +1 -0
libs/libc/sys/proc.h +1 -0
libs/libc/sys/resource.h created
libs/libc/sys/select.h created
libs/libc/sys/time.h created
libs/libc/sys/times.h created
libs/libc/sys/types.h +11 -1
libs/libc/sys/utsname.h created
libs/libc/unistd.h +10 -0
libs/libc/utime.h created
libs/libc_usr/arch/x86_32/crti.asm created
libs/libc_usr/arch/x86_32/crtn.asm created
libs/libc_usr/arch/x86_64/crti.asm created
libs/libc_usr/arch/x86_64/crtn.asm created
libs/libc_usr/dirent.c +27 -6
libs/libc_usr/fcntl.c created
libs/libc_usr/grp.c +9 -1
libs/libc_usr/proc.c +5 -0
libs/libc_usr/pwd.c +9 -1
libs/libc_usr/resource.c created
libs/libc_usr/select.c created
libs/libc_usr/shadow.c +9 -1
libs/libc_usr/signal.c +236 -0
libs/libc_usr/signal.h +8 -0
libs/libc_usr/stdio.c +106 -0
libs/libc_usr/stdlib.c +484 -41
libs/libc_usr/stdlib.h +11 -0
libs/libc_usr/time.c +50 -1
libs/libc_usr/times.c created
libs/libc_usr/unistd.c +260 -0
libs/libc_usr/unistd.h +30 -0
libs/libc_usr/utime.c created
libs/libc_usr/utsname.c created
libs/user/kv.c +2 -10
libs/user/kv.h +1 -1
makefile +2 -2
user/build.mk removed
user/cat/main.c removed
user/chmod/main.c removed
user/clear/main.c removed
user/clock/main.c removed
user/date/main.c removed
user/echo/main.c removed
user/false/main.c removed
user/fetch/main.c removed
user/getty/main.c removed
user/groups/main.c removed
user/head/main.c removed
user/id/main.c removed
user/init/main.c removed
user/kill/main.c removed
user/less/less_doc.c removed
user/less/less_doc.h removed
user/less/less_tty.c removed
user/less/less_tty.h removed
user/less/main.c removed
user/linker32.ld removed
user/linker64.ld removed
user/ln/main.c removed
user/login/main.c removed
user/ls/main.c removed
user/mbrot/main.c removed
user/mkdir/main.c removed
user/mount/main.c removed
user/mv/main.c removed
user/ps/main.c removed
user/pwd/main.c removed
user/rm/main.c removed
user/rmdir/main.c removed
user/sh/complete.c removed
user/sh/complete.h removed
user/sh/input.c removed
user/sh/input.h removed
user/sh/main.c removed
user/sleep/main.c removed
user/stat/main.c removed
user/su/main.c removed
user/term/main.c removed
user/term/term_pty.c removed
user/term/term_pty.h removed
user/term/term_screen.c removed
user/term/term_screen.h removed
user/touch/main.c removed
user/true/main.c removed
user/umount/main.c removed
user/uname/main.c removed
user/uptime/main.c removed
user/vi/main.c removed
user/wdemo/main.c removed
user/whoami/main.c removed
user/wm/main.c removed
user/wm/wm.h removed
user/wm/wm_background.c removed
user/wm/wm_background.h removed
user/wm/wm_cursor.c removed
user/wm/wm_cursor.h removed
user/wm/wm_file.c removed
user/wm/wm_file.h removed
user/wm/wm_loop.c removed
user/wm/wm_loop.h removed
user/wm/wm_rect.h removed
user/wm/wm_state.c removed
userland/build.mk created
userland/core/cat/main.c created
userland/core/chmod/main.c created
userland/core/clear/main.c created
userland/core/cp/main.c created
userland/core/date/main.c created
userland/core/echo/main.c created
userland/core/false/main.c created
userland/core/getty/main.c created
userland/core/groups/main.c created
userland/core/head/main.c created
userland/core/id/main.c created
userland/core/init/main.c created
userland/core/kill/main.c created
userland/core/ln/main.c created
userland/core/login/main.c created
userland/core/ls/main.c created
userland/core/mkdir/main.c created
userland/core/mount/main.c created
userland/core/mv/main.c created
userland/core/ps/main.c created
userland/core/pwd/main.c created
userland/core/rm/main.c created
userland/core/rmdir/main.c created
userland/core/sh/complete.c created
userland/core/sh/complete.h created
userland/core/sh/input.c created
userland/core/sh/input.h created
userland/core/sh/main.c created
userland/core/sleep/main.c created
userland/core/stat/main.c created
userland/core/su/main.c created
userland/core/touch/main.c created
userland/core/true/main.c created
userland/core/tty/main.c created
userland/core/umount/main.c created
userland/core/uname/main.c created
userland/core/uptime/main.c created
userland/core/whoami/main.c created
userland/games/doom/.gitignore created
userland/games/doom/Makefile created
userland/games/doom/doom_apheleia.c created
userland/games/doom/include/strings.h created
userland/games/mbrot/main.c created
userland/games/wdemo/main.c created
userland/linker32.ld created
userland/linker64.ld created
userland/tools/clock/main.c created
userland/tools/fetch/main.c created
userland/tools/less/main.c created
userland/tools/top/main.c created
userland/tools/vi/main.c created
userland/ui/term/main.c created
userland/ui/term/term_pty.c created
userland/ui/term/term_pty.h created
userland/ui/term/term_screen.c created
userland/ui/term/term_screen.h created
userland/ui/wm/main.c created
userland/ui/wm/wm.h created
userland/ui/wm/wm_background.c created
userland/ui/wm/wm_background.h created
userland/ui/wm/wm_cursor.c created
userland/ui/wm/wm_cursor.h created
userland/ui/wm/wm_file.c created
userland/ui/wm/wm_file.h created
userland/ui/wm/wm_loop.c created
userland/ui/wm/wm_loop.h created
userland/ui/wm/wm_rect.h created
userland/ui/wm/wm_state.c created
utils/qemu.mk +30 -42