To me, the new one makes it much easier to find what I need.
In particular it doesn't force the user to browse directory
listings. But this might be just me, so any feedback is welcome.
I've only done this for the first of the tables; I'd rather get some
feedback before spending time on reworking the rest.
Maybe just say the type of the 3rd arg depends on the operation (and document the type for each operation that takes the third arg) instead of trying to assume it's a single type? In CheriBSD we have a wrapper in libc to deal with this and have fcntl() as a truly var-args function. On existing platforms var-args is close enough to work for passing syscall arguments, but not all ABIs require this. (var-args are passed as a block in a bounded pointer on CHERI platforms and not just a continuation of register arguments).