summaryrefslogtreecommitdiff
path: root/tools
AgeCommit message (Collapse)Author
2022-07-27tools/stacktrace_resolve.awk: fix the kernel binary pathdzwdz
2022-07-26tools: add tools/sort_includes.rbdzwdz
2022-07-16amd64: barely boot into kernel codedzwdz
2022-07-11user: reorganize the userland sourcesdzwdz
2022-07-09syscalls/pipe: turn into a POSIX-style api with separate rw endsdzwdz
Without separate read/write ends you can't tell when there are no more writers left if you have multiple readers. Consider this piece of code: int fd = pipe(); fork(); // execution continues in 2 processes while (read(fd, &some_buf, sizeof somebuf) >= 0) { ... } Once both processes call `read()`, it's obvious that no writes are possible - all the processes that hold a reference to the pipe are currently stuck on a `read()` call, so the kernel could just make it return an error in both. But, what then? It's still possible to write to the pipe, and you can't know if the other process will do that. Thus, if you don't want to miss any output, you have to keep reading the pipe. Forever. Both processes end up stuck. Having separate read/write ends prevents that.
2022-06-30syscall_wrappers: generate casts so the compiler doesn't complaindzwdz
2022-05-03kernel/alloc: print who allocated unfreed memory on shutdowndzwdz
2022-05-03kernel: stacktraces on panic()dzwdz
2022-05-02meta: write a script to generate `src/init/syscalls.c`dzwdz
2021-08-07build all parts of the toolchain to the same $PREFIXdzwdz
If gcc is built with a different $PREFIX than binutils, it won't even attempt using them - it will use the system assembler instead, which fails for obvious reasons.
2021-08-06a (seemingly broken) gcc build scriptdzwdz
It compiles, but the resulting gcc binary doesn't actually work. Maybe it's too new for the binutils?
2021-08-06quit the binutils build script if an error occursdzwdz
2021-08-05add a script which builds i686-elf-binutilsdzwdz
2021-07-10implement a basic linterdzwdz
Currently it just checks if the kernel doesn't accidentally use arch-dependent headers.