Ditto. I love this book. It's full of all sorts of wonderful knowledge about how Linux works. It has also served as a great way to prop my monitor up higher from time to time!
I wrote Linux kernel code years ago. I was struck with how similar the APIs were for compiled-in drivers, loadable drivers and applications. They were almost identical, with small variations in spelling and parameters. It seemed to me that, with only a little more effort, they could have been nearly identical. That would have greatly helped make code portable and reusable e.g. write a library that could be used by apps and drivers both.
IMHO, portable code is the reason for the different nomenclature. There is also something to be said for the cognizant development of those API's in such a manner .. new words control ownership.
Learning the general idea of system calls was a revelation to me since it implied that, in a sense, every language was ultimately a scripting language for the kernel.
Is this comparable to Erlang on Xen and OpenMirage (ocaml)?
Are there any examples of network-facing services which use this library to execute on a minimal Linux kernel+userspace? What do you think of supporting MiniOS in the future?
It runs on Xen via the rump kernel http://rumpkernel.org. it should run on OSv too but will need some work as that uses the glibc ABI not the kernel ABI which differ slightly.
Wow, thank you for this work - I'm very interested in using LuaJIT and kernel services in this way, so I will spend some research hours this week reading it and running it .. and using it for things. I guess I'll PM you with a report from the field at some point ..
Nowdays they don't use INT 0x80 for syscalls anymore. It's faster to use something called "virtual system calls" from what I understand (I am not a kernel dev, so don't quote me). It's just what it sounds like. If you ldd a linux binary, you'll see a shared object called `linux-gate.so` or `linux-vdso.so` (it's been renamed a few times). This file doesn't actually exist. It's an imaginary library that exists as the doorway into the kernel for making these calls.