Linux kernel interfaces

This is an old revision of this page, as edited by 192.114.7.39 (talk) at 17:23, 4 February 2014 (See also). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

There are two types of application programming interface (API) in the Linux kernel that are not to be confused: the "kernel user-space" API and the "kernel-internal" API.

Kernel user-space API

 
The Linux kernel API versus the POSIX API.

The kernel user-space API is the API that allows programs in user space to access system resources and services of the Linux kernel. This API, by choice, never breaks. The POSIX API is only a small part of the Linux kernel API.

Much available free and open-source software is written for the POSIX API. But since the last POSIX version is from 2008, and since so much more development is going on with the Linux kernel as compared to the other POSIX-compatible kernels, various software has been developed that target solely the Linux kernel user-space API. Well-known examples are systemd and Weston.

People such as Lennart Poettering openly advocate writing software solely for the Linux kernel user-space API instead of POSIX, where this offers advantages.

In-kernel API

By choice, the Linux kernel has no stable in-kernel API (a.k.a. Binary Kernel Interface).[1]

See also

  • C standard library – the library for the C programming language made available across implementations
    • GNU C Library – the GNU Project's implementation of the C standard library
  • system call – is a function to facilitate programs to requests services from the kernel
    • mmap – a system call
    • fanotify – a system call
    • dnotify - a system call
    • inotify – a system call
    • netlink – socket family used for IPC between kernel and user space processes, designed as the successor of ioctl
  • Windows API – article on various API available on Microsoft Windows operating systems
  • Wine – a compatibility layer between Linux and programs written for Microsoft Windows

References

  1. ^ "The Linux Kernel Driver Interface".