| ▲ | mixedbit 6 hours ago | ||||||||||||||||
Is the OS implemented from scratch, or is it a stripped down version of some existing OS? | |||||||||||||||||
| ▲ | toast0 6 hours ago | parent [-] | ||||||||||||||||
The kernel is pretty much from scratch. It provides a FreeBSD compatible syscall interface for the syscalls that BEAM calls, as well as the FreeBSD runtime loader. I do make healthy use of FreeBSD libraries to provide the OS, you can get an idea of what I pull from the file names in the Makefile [1]. Building an OS is a lot, so I tried to stick to the parts I find fun and interesting. Things like a NIC driver in Erlang [2] (with NIFs to copy to/from device memory). But process / thread creation is original, memory management is original (not necessarily good), time keeping is original, etc. I used existing code and interfaces so I didn't have to write a bootloader, memcpy, and lots of other stuff. [1] https://github.com/russor/crazierl/blob/main/Makefile#L23 [2] https://github.com/russor/crazierl/blob/main/src/rtl_8168.er... | |||||||||||||||||
| |||||||||||||||||