Right; why isn’t there a sys_kvm syscall that you can just call from a C program?
- ioctls on char/blkdevs for either physical or logical devices (which also allow for a 'handle' paradigm of operation, and for event polling via epoll/select)
- sysfs and procfs entries for system and process tunables and data
- debugfs for day to day debugging (which is explicitely unstable and not enabled in most production kernels)
- prctl, fcntl, ...
In addition, all of the above is 'automatically' ported across architectures. Some Linux architecture ports have their own syscall tables (with own numbering) and need to be explicitly modified any time a syscall is added.