summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-08-25bootstrap: support hardlinks in initrddzwdz
required for the binutils port
2023-08-25libc: get as+ld to workdzwdz
2023-08-24libc: get most of binutils to compiledzwdz
2023-08-17build: rework how sysroots workdzwdz
/usr/include is now built on the fly, letting me merge include files from multiple modules, which should be a win for organization later on. binutils & gcc need to be recompiled. limits.h shamelessly stolen from heat on #osdev, as gcc stopped providing me with its own header. which was a hack in the first place
2023-08-16libc: "fix" unused argument warningsdzwdz
2023-08-16build: generate the Makefile in pythondzwdz
i've been wanting to do this for a while the main benefit is that i can do stuff per-rule, so i can get rid of the `@mkdir -p $(D)` i had everywhere, and in the near future i can make CC targets automatically depend on a sysroot
2023-08-15build: replace make {boot,test} with a dedicated scriptdzwdz
2023-08-15user: fix freeze if graphical shell was quitdzwdz
2023-08-14reorganization: first stepsdzwdz
2023-08-13libc: replace fork2_n_mount with mount_atdzwdz
2023-08-13kern: undo accidentally commited debug codedzwdz
2023-08-10user: more descriptive process titlesdzwdz
2023-08-10user/fs: no longer inject MOUNT_ATs by defaultdzwdz
arguably the wrong choice from an usability standpoint, but the right choice from a performance standpoint. there's definitely a nicer way to do this
2023-08-08bootstrap: fix main()'s stack alignmentdzwdz
2023-08-08build: build bootstrap as an ELF first, and then convert to a raw binarydzwdz
2023-08-06kernel: put every driver in /kdev/dzwdz
there's no real reason for bootstrap to be doing that, and this brings it closer to only doing the elf loading
2023-08-06libc: fs_dirinject2 for injecting multiple pathsdzwdz
2023-07-19user /keyboard: handle open()s instantly even if waiting for kbdzwdz
fixes e.g. `echo */*` in dash
2023-07-08user/keyboard: check open() pathdzwdz
this prevents someone from trying to `ls /keyboard/`, and makes `echo */*` in dash almost work if you mash the keyboard
2023-07-08add debian build deps to the readmedzwdz
2023-06-25user/libc: fix fgets not storing the newlinedzwdz
also removed an old TODO
2023-06-25user/testelf: fix broken path in stackexecdzwdz
2023-06-25ports: reimplement the ports system from scratchdzwdz
side stuff: * removed sltar since it wasn't working anyways * made signal() no longer panic, as that broke certain ports (oops) * doom now ships with the FreeDOOM WADs * /usr/ was aliased to /init/usr/, more directories were added to /bin/ to improve compat with ports
2023-06-20build: remove the old "linter"dzwdz
It was a good idea, but it didn't even work. 0/10 Maybe I should replace it with semgrep someday. For the only current rule, I can split src/kernel/ into src/kernel/{amd64,generic}, and just don't have amd64 in generic's include path.
2023-06-18libc: experimental fread buffering supportdzwdz
makes find(1) run 3x faster
2023-06-17libc: implement dirent.hdzwdz
2023-06-17kernel: fix procfs overflow bug, add safeguard to prevent similar onesdzwdz
2023-06-17libc: dumb stat() stubs to make dash's PATH search workdzwdz
2023-06-17libc: expand psdata into a proper struct, include executable basedzwdz
this is very useful for debugging userland programs using the qemu gdb stub
2023-06-11kernel: replace await with wait2, roughly compatible with POSIXdzwdz
dash works now :^)))
2023-06-10user: fix floating point operationsdzwdz
2023-06-10libc: last stubs needed for dash to run! :^)dzwdz
2023-06-10kernel: implement DUP_SEARCH (like unix's F_DUPFD)dzwdz
2023-06-10libc: basic signal stubs, non-spec-compliant write() stubdzwdz
2023-06-10kernel: implement getpid, getppiddzwdz
2023-06-09ports/dash: stub out everything needed for dash to compiledzwdz
2023-06-08libc: move the strto* functions to stdlib.h, where they "belong"dzwdz
2023-06-08user/vterm: support displaying tabsdzwdz
2023-06-08libc/exec: don't leak file descriptorsdzwdz
2023-06-04user/vterm: vendor a font (spleen) instead of downloading one on builddzwdz
2023-06-04kernel: rework /proc/ and process IDsdzwdz
I'm yet to write proper docs but the TL;DR is: Mounting /proc/ creates a new pid namespace. You're still visible in the old namespace with your old pid, but your children won't be. You see your own pid as 1. Current pids of children will be preserved, pids will be allocated starting from the highest one of your children.
2023-06-02libc: stub out sltar's requirementsdzwdz
2023-02-25merge the initrd and sysroot directoriesdzwdz
2023-02-25user/font: stop depending on the system kbd installdzwdz
2023-02-25user/ext2fs: don't treat EOF as an errordzwdz
2023-02-25ports: move to the new toolchaindzwdz
2023-02-25toolchain: working customized toolchain for userland binsdzwdz
2023-02-24toolchain: partially set up the sysrootdzwdz
2023-02-23build: don't -Isrc/ in user codedzwdz
2023-02-23ports/doom: update to the current camellia apidzwdz