Do not follow this link

~tomleb/mercury

Implement simple virtio9pfs driver
bufio: allow to borrowread up to last byte
Don't error when reading from end of tar file
hash: import from Hare stdlib
Makefile: update for upstream hare changes
sysinit: provide usrinit will all system memory
build: move SYSLINUX to config.mk
rt: overhaul memory allocator

Functionally identical but with much more readable code.
sysinit: move file objects onto heap

This will make freeing them up easier later on.
rt: fix various allocator and mmap issues

Large mappings spanning >64 pages could be mapped non-continuously,
particularly if there were other threads doing allocation at the same
time.
rt: implement spinlocks and simple atomics

Updates malloc and free to acquire a spinlock before entering critical
sections, and updates mmap to use atomic fetch_add to update the heap
break.

Further improvements will be necessary to have a complete story for
thread safety in Mercury, namely the reduction or elimination of static
variables in the stdlib (e.g. strconv).

References: https://todo.sr.ht/~sircmpwn/mercury/13
all: improve error handling further
usrinit: implement simple serial terminal
Last pieces for usrinit threads touching up
rt: complete basic threads implementation
sysinit: basic TLS support

Basic because processes which want to spawn threads still have to have
access to a lot of capabilities, including some spare memory and their
own vspace and task -- future improvement will create an IPC protocol
for managing threads so that this is not necessary.
sysinit: implement procmgr::query

Still todo:
- Add sysinit itself to the list of processes
- Set up usrinit via procmgr instead of munging it
usrinit: add help command
usrinit: add cat, hexdump commands
Next
Do not follow this link