> I see systems making it more difficult for code to make syscalls, > not easier.
That's true. I think it's because other systems can afford to keep that ABI unstable. Since Linux is an independently developed kernel, it _must_ be possible to target the kernel directly with no user space component in-between. Someone might write a freestanding program with nothing but system calls and boot Linux directly into it. This feature also makes it ideal for other programming languages. On every other operating system, you need to link to some C library. On Linux, that library is not actually necessary due to stable ABIs. Rust programmers could conceivably recreate the entire Linux userspace in Rust given enough time and effort. I created a programming language based entirely around that concept, a lisp variant which uses nothing but system calls and provides a system-call primitive to lisp code. It's still in its infancy due to my limited free time but it's a fact that with system calls it could do anything, it could mount disks. > I also think that this could be misleading. I don't see how. The __builtin_ prefix makes it clear that it's a compiler feature rather than a libc function. > There are sometimes subtle differences between the > syscall interface and the interface exported by libc. Yes. The C libraries seem to have some kind of cancellation mechanism built right into it, for example. Using the system calls directly eliminates them. This lets other languages build their own mechanisms.