Knowledge (XXG)

Linux kernel interfaces

Source đź“ť

2497: 254: 656: 664: 536: 78: 2509: 150: 491: 110: 25: 2483: 723: 635:
repeatedly denied guaranteeing stable in-kernel APIs for device drivers. Guaranteeing such would have faltered the development of the Linux kernel in the past and would still in the future and, due to the nature of free and open-source software, are not necessary. Ergo, by choice, the Linux kernel has no
778:
during Linux kernel 1.3 development as a character driver interface to provide multiple kernel and user-space bidirectional communications links. Then, Alexey Kuznetsov extended it during Linux kernel 2.1 development to provide a flexible and extensible messaging interface to the new advanced routing
189:
is written for the POSIX API. Since so much more development flows into the Linux kernel as compared to the other POSIX-compliant combinations of kernel and C standard library, the Linux kernel and its API have been augmented with additional features. Programming for the full Linux API, rather than
217:
explained some of the perceived issues with the Linux kernel's user-space API, describing that it contains multiple design errors by being non-extensible, unmaintainable, overly complex, of limited purpose, in violation of standards, and inconsistent. Most of those mistakes cannot be fixed because
634:
The Linux kernel is a monolithic kernel, hence device drivers are kernel components. To ease the burden of companies maintaining their (proprietary) device drivers outside of the main kernel tree, stable APIs for the device drivers have been repeatedly requested. The Linux kernel developers have
630:
Many kernel-internal APIs exist, allowing kernel subsystems to interface with one another. These are being kept fairly stable, but there is no guarantee for stability. A kernel-internal API can be changed when such a need is indicated by new research or insights; all necessary modifications and
174:
in a way which is reasonably compatible, robust and performant, and to provide additional useful features not defined in POSIX, just as the kernel–user space APIs of other systems implementing the POSIX API also provide additional features not defined in POSIX.
269:
for Linux includes wrappers around the system calls of the Linux kernel; the combination of the Linux kernel system call interface and a C standard library is what builds the Linux API. Some popular implementations of the C standard library are
161:
The Linux API includes the kernel–user space API, which allows code in user space to access system resources and services of the Linux kernel. It is composed of the system call interface of the Linux kernel and the subroutines in the
972:
and Linux is the focal point of all Free Software development. Due to that I can only recommend developers to try to hack with only Linux in mind and experience the freedom and the opportunities this offers you. So, get yourself a copy of
675:
For many use cases, the Linux API is considered too low-level, so APIs of higher abstraction must be used. Higher-level APIs must be implemeted on top of lower-level APIs. Examples:
507: 2059: 606:
It should be able to compile the software with different compilers against the definitions specified in the ABI and achieve full binary compatibility. Compilers that are
568:. Defining a useful ABI and keeping it stable is less the responsibility of the Linux kernel developers or of the developers of the GNU C Library, and more the task for 2600: 576:(ISVs) who wish to sell and provide support for their proprietary software as binaries only for such a single Linux ABI, as opposed to supporting multiple Linux ABIs. 89:
provides multiple interfaces to user-space and kernel-mode code that are used for varying purposes and that have varying properties by design. There are two types of
178:
The Linux API, by choice, has been kept stable over the decades through a policy of not introducing breaking changes; this stability guarantees the portability of
1348: 779:
infrastructure. Since then, Netlink sockets have become one of the main interfaces that kernel subsystems provide to user-space applications in Linux. Modern
2547: 2148: 439: 2143: 783: 1146: 241:
Various issues with the organization of the Linux kernel system calls are being publicly discussed. Issues have been pointed out by Andy Lutomirski,
3062: 1273: 2876: 2847: 780: 667:
But the implementation of the OpenGL-specification is executed on the CPU in the context of the running operating system. One design goal of
2501: 35: 659:
OpenGL is indeed an abstraction API to make use of diverse GPUs of multiple vendors without the need to program for each one specifically.
46: 1190: 504:
This section mostly ignores the kernel-userspace ABI (that is very real and important thing) and jumps into userspace-to-userspace APIs.
707: 515: 1880: 1648: 473: 344: 134: 90: 64: 511: 182:. At the same time, Linux kernel developers have historically been conservative and meticulous about introducing new system calls. 2651: 2595: 1184: 190:
just the POSIX API, may provide advantages in cases where those additional features are useful. Well-known current examples are
2570: 2540: 1378: 1217: 974: 737: 2763: 2661: 1990: 775: 1318: 1104: 3041: 2590: 2575: 2424: 1242: 607: 186: 2636: 2621: 2580: 2305: 1353: 557: 540: 2802: 2749: 1707: 573: 462:
libnl (The libnl suite is a collection of libraries providing APIs to netlink protocol based Linux kernel interfaces.)
768: – socket family used for IPC between kernel and user space processes, designed as the successor of 253: 2817: 2656: 2533: 2406: 2220: 1338: 1266: 2852: 2671: 2631: 2626: 2585: 2411: 2053: 1389: 1090: 950:"Interview: Lennart Poettering - Lennart Poettering will give a talk about "Systemd: beyond init" at FOSDEM 2011" 908: 442:
without which no rendering acceleration would be available at all, only the 2D drivers would be available in the
2895: 2782: 2646: 1974: 1959: 1875: 1663: 1468: 919:
If a change results in user programs breaking, it's a bug in the kernel. We never EVER blame the user programs.
801: 701: 688: 456: 435: 334: 235: 130: 2641: 2317: 2116: 1752: 747: 611: 1328: 3029: 2968: 2857: 2837: 2786: 2744: 2462: 2439: 2434: 2269: 2235: 2225: 2097: 2042: 1919: 1458: 998: 2812: 2778: 2680: 2616: 2513: 2416: 1259: 905:"Re: [Regression w/ patch] Media commit causes user space to misbahave (was: Re: Linux 3.8-rc1)" 655: 399: 39:
that states a Knowledge (XXG) editor's personal feelings or presents an original argument about a topic.
842: 3009: 2983: 2446: 2048: 1610: 1308: 367: 949: 687:
specifications in proprietary Linux graphics drivers and the free and open-source implementation in
2978: 2930: 2807: 2242: 1721: 1580: 1514: 551: 1128: 417: 2915: 2822: 2396: 2230: 1816: 1716: 1653: 1575: 1570: 1358: 816: – a compatibility layer between Linux and programs written for Microsoft Windows 569: 266: 203: 163: 1176: 663: 3024: 2973: 2905: 2862: 2703: 2367: 2015: 1985: 1980: 1831: 1486: 1448: 819: 588: 308: 304: 199: 446:. DRM was developed for Linux, and since has been ported to other operating systems as well. 3004: 2556: 2121: 1683: 1404: 1394: 1303: 1180: 1018: 964: 755: – is a function to facilitate programs to request services from the kernel 794: – article on various API available on Microsoft Windows operating systems 405: 2948: 2910: 2881: 2357: 2025: 1806: 1246: 994: 864: 846: 813: 759: 742: 565: 500:
needs attention from an expert in Free and open-source software, Software or Computing
438:
has been paramount for the development and implementations of well-defined and performant
242: 238:(DRM), define their own system calls, all of which are part of the system call interface. 214: 206:
openly advocate to prefer the Linux API over the POSIX API, where this offers advantages.
142: 1200: 671:
was to make the "graphics driver", i.e. the implementation of the graphics API, do less.
535: 77: 3034: 2958: 2920: 2792: 2387: 2292: 2203: 2080: 2075: 2070: 2065: 1848: 1673: 1668: 1313: 323:
systems, additional capabilities of the Linux kernel exist that are not part of POSIX:
1114: 3056: 2900: 2739: 2693: 2322: 2138: 1944: 1934: 1693: 1565: 1443: 258: 118: 1160: 2827: 2487: 2208: 2126: 2020: 1964: 1323: 1282: 728: 684: 668: 561: 443: 231: 86: 1194: 879: 647:
Since there are no stable in-kernel APIs, there cannot be stable in-kernel ABIs.
2953: 2935: 2718: 2708: 2698: 2213: 2106: 1688: 1585: 860: 791: 752: 179: 1239: 1227: 149: 2300: 2275: 2262: 2167: 2155: 2085: 1995: 1481: 1384: 1343: 981:
compatibility and hack away your amazing Linux software. It's quite relieving!
718: 600: 2890: 2797: 2723: 2688: 2162: 2131: 2000: 1836: 1625: 1496: 1453: 797: 704:: abstraction API for input/sound/etc. available for many operating systems. 427: 394: 320: 3019: 2280: 2101: 2090: 2010: 1954: 1949: 1895: 1843: 1732: 1658: 1236:
by Jonathan Corbet, Greg Kroah-Hartman and Alessandro Rubini, 3rd edition
1132: 379: 299: 218:
doing so would break the ABI that the kernel presents to the user space.
1223: 166:. The focus of the development of the Linux API has been to provide the 3014: 2943: 2713: 2362: 2347: 2257: 2247: 2187: 2111: 2005: 1929: 1870: 1784: 1747: 1678: 1620: 1615: 1519: 1476: 1072: 1054: 935: 765: 596: 592: 547: 385: 373: 337:, especially the driver-private ioctls for the command submission, are 327: 195: 126: 1086: 1032: 904: 117:
is composed out of the system call interface of the Linux kernel, the
109: 2352: 2337: 2327: 2182: 2177: 1939: 1890: 1863: 1826: 1796: 1763: 1742: 1491: 1438: 1333: 1109: 695: 680: 584: 289: 279: 210: 2525: 1209: 822:– compatibility layer between Linux and programs written for Android 1068: 1050: 931: 2963: 2482: 2172: 2035: 1969: 1924: 1885: 1853: 1821: 1779: 1774: 1737: 1605: 1600: 1560: 1555: 978: 770: 722: 662: 654: 619: 534: 466: 410: 361: 355: 284: 274: 252: 234:
in a kernel. In the Linux kernel, various subsystems, such as the
171: 154: 148: 138: 108: 76: 1087:"[PATCH, RFC] random: introduce getrandom(2) system call" 2252: 2030: 1858: 1789: 1433: 1233: 1036: 615: 421:
was merged into the Linux kernel mainline in kernel version 3.17
350:
set system calls, which are not part of the POSIX specifications
294: 191: 2529: 1255: 1251: 2999: 2332: 2310: 580: 484: 122: 18: 579:
An ABI has to be defined for every instruction set, such as
261:
is a wrapper around the Linux kernel system call interface.
36:
personal reflection, personal essay, or argumentative essay
16:
An overview and comparison of the Linux kernel API and ABI.
556:
The term Linux ABI refers to a kernel–user space ABI. The
1205: 230:
of a kernel is the set of all implemented and available
330:
subsystem, the system calls it introduces and libcgroup
42: 2992: 2929: 2875: 2836: 2771: 2762: 2732: 2679: 2670: 2609: 2563: 2455: 2395: 2386: 2291: 2196: 1912: 1805: 1715: 1706: 1639: 1544: 1537: 1528: 1505: 1467: 1426: 1419: 1367: 1296: 1289: 1163:. Andrey Ponomarenko's ABI laboratory. 2016-03-15. 81:Linux API, Linux ABI, and in-kernel APIs and ABIs 389:have been exclusive to the Linux kernel so far. 1129:"NetBSD 7.0 Will Finally Have DRM/KMS Drivers" 2541: 1267: 1161:"Analysis of ABI changes in the Linux kernel" 932:"Choosing between portability and innovation" 431:initiates a file "read-ahead" into page cache 8: 440:free and open-source graphics device drivers 1051:"Flags as a system call API design pattern" 837: 835: 2768: 2676: 2548: 2534: 2526: 2392: 2288: 1712: 1541: 1534: 1423: 1293: 1274: 1260: 1252: 564:. Any such ABI is therefore bound to the 508:WikiProject Free and open-source software 222:System call interface of the Linux kernel 65:Learn how and when to remove this message 2502:Free and open-source software portal 2060:Earliest eligible virtual deadline first 1226:with main API functions and structures, 1595: 831: 800: – header file for the 631:testing have to be done by the author. 1033:"Making a universal list of syscalls?" 786:use it to communicate with user-space. 518:may be able to help recruit an expert. 398:was introduced in version 3.17 of the 97:the "kernel–user space" API; and 7: 560:refers to the compiled binaries, in 1640: 1147:"The Linux Kernel Driver Interface" 808:of the functions in the Windows API 1240:Linux Kernel Linked List Explained 999:"How to design a Linux kernel API" 977:, ignore everything it says about 962:In fact, the way I see things the 708:Simple and Fast Multimedia Library 14: 474:Advanced Linux Sound Architecture 345:Advanced Linux Sound Architecture 341:part of the POSIX specifications. 170:of the specifications defined in 91:application programming interface 2652:Object-oriented operating system 2508: 2507: 2495: 2481: 1349:Supported computer architectures 1201:API/ABI changes review for Linux 968:has been taking the role of the 878:Alessandro Rubini (2006-11-02). 804:which contains declarations for 721: 489: 23: 1379:The Linux Programming Interface 1218:The Linux Programming Interface 1206:The Linux Programming Interface 1197:(in deprecated htmldocs format) 975:The Linux Programming Interface 738:The Linux Programming Interface 3063:Interfaces of the Linux kernel 2662:Supercomputer operating system 1191:The API of Linux kernel 2.6.20 1: 903:Linus Torvalds (2012-12-23). 608:free and open-source software 187:free and open-source software 2637:Just enough operating system 2622:Distributed operating system 1224:Interactive Linux kernel map 574:independent software vendors 558:application binary interface 539:The Linux API and the Linux 2750:User space and kernel space 1069:"On vsyscalls and the vDSO" 502:. The specific problem is: 93:(API) in the Linux kernel: 3079: 2657:Real-time operating system 2221:High-performance computing 2043:Process and I/O schedulers 1181:Memory Management APIs 5.0 1019:"System Call Organization" 545: 100:the "kernel internal" API. 2853:Multilevel feedback queue 2848:Fixed-priority preemptive 2632:Hobbyist operating system 2627:Embedded operating system 2475: 2054:Completely Fair Scheduler 1319:Tanenbaum–Torvalds debate 909:Linux kernel mailing list 603:, if both are supported. 2896:General protection fault 2647:Network operating system 2601:User features comparison 1975:Kernel same-page merging 1545: 1177:The Linux Kernel API 5.0 702:Simple DirectMedia Layer 599:(64-Bit), etc. with the 457:Direct Rendering Manager 359:(fast userspace mutex), 335:Direct Rendering Manager 333:The system calls of the 236:Direct Rendering Manager 2642:Mobile operating system 2318:OS-level virtualization 843:"ControlGroupInterface" 774:; Netlink was added by 748:Semaphore (programming) 612:GNU Compiler Collection 2745:Loadable kernel module 2463:List of Linux adopters 1405:Linux User Group (LUG) 802:C programming language 694:Implementation of the 679:Implementation of the 672: 660: 543: 262: 249:The C standard library 158: 146: 82: 45:by rewriting it in an 2813:Process control block 2779:Computer multitasking 2617:Disk operating system 880:"Kernel System Calls" 666: 658: 538: 516:WikiProject Computing 400:Linux kernel mainline 256: 228:system call interface 152: 112: 80: 2984:Virtual tape library 2576:Forensic engineering 2049:Brain Fuck Scheduler 1309:Linux Mark Institute 1234:Linux Device Drivers 1220:was released in 2010 512:WikiProject Software 409:was proposed by the 2993:Supporting concepts 2979:Virtual file system 2243:Real-time computing 1515:Linux Standard Base 570:Linux distributions 552:Linux Standard Base 2916:Segmentation fault 2764:Process management 2231:Compute Node Linux 1817:C standard library 1245:2009-09-25 at the 952:. fosdem.org. 2011 673: 661: 544: 315:Additions to POSIX 267:C standard library 263: 204:Lennart Poettering 164:C standard library 159: 147: 83: 47:encyclopedic style 34:is written like a 3050: 3049: 2906:Memory protection 2877:Memory management 2871: 2870: 2863:Shortest job next 2758: 2757: 2557:Operating systems 2523: 2522: 2471: 2470: 2382: 2381: 2378: 2377: 2016:Network scheduler 1908: 1907: 1904: 1903: 1702: 1701: 1449:Linux kernel oops 1415: 1414: 1395:Linux conferences 533: 532: 450:Further libraries 353:The system calls 202:. People such as 75: 74: 67: 3070: 3005:Computer network 2769: 2677: 2550: 2543: 2536: 2527: 2511: 2510: 2500: 2499: 2498: 2488:Linux portal 2486: 2485: 2393: 2289: 2098:Security Modules 1713: 1542: 1535: 1424: 1304:Linux Foundation 1294: 1276: 1269: 1262: 1253: 1165: 1164: 1157: 1151: 1150: 1143: 1137: 1136: 1125: 1119: 1118: 1113:. Archived from 1101: 1095: 1094: 1083: 1077: 1076: 1065: 1059: 1058: 1047: 1041: 1040: 1029: 1023: 1022: 1015: 1009: 1008: 1006: 1005: 991: 985: 984: 958: 957: 946: 940: 939: 928: 922: 921: 916: 915: 900: 894: 893: 891: 890: 875: 869: 868: 857: 851: 850: 839: 773: 762: 731: 726: 725: 651:Abstraction APIs 528: 525: 519: 493: 492: 485: 430: 420: 408: 397: 392:The system call 388: 382: 376: 370: 364: 358: 70: 63: 59: 56: 50: 27: 26: 19: 3078: 3077: 3073: 3072: 3071: 3069: 3068: 3067: 3053: 3052: 3051: 3046: 2988: 2949:Defragmentation 2934: 2925: 2911:Protection ring 2880: 2867: 2839: 2832: 2754: 2728: 2666: 2605: 2559: 2554: 2524: 2519: 2496: 2494: 2480: 2467: 2451: 2398: 2374: 2358:User-mode Linux 2287: 2192: 1900: 1808: 1801: 1720: 1698: 1635: 1547: 1524: 1501: 1463: 1411: 1363: 1354:Version history 1285: 1280: 1247:Wayback Machine 1173: 1168: 1159: 1158: 1154: 1145: 1144: 1140: 1127: 1126: 1122: 1103: 1102: 1098: 1085: 1084: 1080: 1067: 1066: 1062: 1049: 1048: 1044: 1031: 1030: 1026: 1017: 1016: 1012: 1003: 1001: 995:Michael Kerrisk 993: 992: 988: 955: 953: 948: 947: 943: 930: 929: 925: 913: 911: 902: 901: 897: 888: 886: 877: 876: 872: 865:freedesktop.org 859: 858: 854: 847:freedesktop.org 841: 840: 833: 829: 769: 758: 743:Michael Kerrisk 727: 720: 717: 653: 645: 639:in-kernel API. 628: 566:instruction set 554: 546:Main articles: 529: 523: 520: 506: 494: 490: 483: 452: 426: 416: 404: 393: 384: 378: 372: 366: 360: 354: 317: 251: 243:Michael Kerrisk 224: 215:Michael Kerrisk 185:Much available 168:usable features 143:freedesktop.org 107: 71: 60: 54: 51: 43:help improve it 40: 28: 24: 17: 12: 11: 5: 3076: 3074: 3066: 3065: 3055: 3054: 3048: 3047: 3045: 3044: 3039: 3038: 3037: 3035:User interface 3032: 3022: 3017: 3012: 3007: 3002: 2996: 2994: 2990: 2989: 2987: 2986: 2981: 2976: 2971: 2966: 2961: 2959:File attribute 2956: 2951: 2946: 2940: 2938: 2927: 2926: 2924: 2923: 2921:Virtual memory 2918: 2913: 2908: 2903: 2898: 2893: 2887: 2885: 2873: 2872: 2869: 2868: 2866: 2865: 2860: 2855: 2850: 2844: 2842: 2834: 2833: 2831: 2830: 2825: 2820: 2815: 2810: 2805: 2800: 2795: 2793:Context switch 2790: 2775: 2773: 2766: 2760: 2759: 2756: 2755: 2753: 2752: 2747: 2742: 2736: 2734: 2730: 2729: 2727: 2726: 2721: 2716: 2711: 2706: 2701: 2696: 2691: 2685: 2683: 2674: 2668: 2667: 2665: 2664: 2659: 2654: 2649: 2644: 2639: 2634: 2629: 2624: 2619: 2613: 2611: 2607: 2606: 2604: 2603: 2598: 2593: 2588: 2583: 2578: 2573: 2567: 2565: 2561: 2560: 2555: 2553: 2552: 2545: 2538: 2530: 2521: 2520: 2518: 2517: 2505: 2491: 2476: 2473: 2472: 2469: 2468: 2466: 2465: 2459: 2457: 2453: 2452: 2450: 2449: 2444: 2443: 2442: 2437: 2429: 2428: 2427: 2419: 2414: 2409: 2403: 2401: 2390: 2384: 2383: 2380: 2379: 2376: 2375: 2373: 2372: 2371: 2370: 2365: 2360: 2355: 2350: 2342: 2341: 2340: 2335: 2330: 2325: 2315: 2314: 2313: 2308: 2297: 2295: 2293:Virtualization 2286: 2285: 2284: 2283: 2278: 2267: 2266: 2265: 2260: 2255: 2250: 2240: 2239: 2238: 2233: 2228: 2218: 2217: 2216: 2211: 2200: 2198: 2194: 2193: 2191: 2190: 2185: 2180: 2175: 2170: 2165: 2159: 2158: 2153: 2152: 2151: 2146: 2139:Device drivers 2135: 2134: 2129: 2124: 2119: 2114: 2109: 2104: 2094: 2093: 2088: 2083: 2081:SCHED_DEADLINE 2078: 2076:O(1) scheduler 2073: 2071:O(n) scheduler 2068: 2066:Noop scheduler 2063: 2057: 2051: 2046: 2039: 2038: 2033: 2028: 2023: 2018: 2013: 2008: 2003: 1998: 1993: 1988: 1983: 1978: 1972: 1967: 1962: 1957: 1952: 1947: 1942: 1937: 1932: 1927: 1922: 1920:Kernel modules 1916: 1914: 1910: 1909: 1906: 1905: 1902: 1901: 1899: 1898: 1893: 1888: 1883: 1878: 1873: 1868: 1867: 1866: 1861: 1856: 1851: 1846: 1841: 1840: 1839: 1829: 1824: 1813: 1811: 1803: 1802: 1800: 1799: 1794: 1793: 1792: 1782: 1777: 1772: 1769: 1766: 1761: 1758: 1755: 1750: 1745: 1740: 1735: 1730: 1726: 1724: 1710: 1704: 1703: 1700: 1699: 1697: 1696: 1691: 1686: 1681: 1676: 1674:Memory barrier 1671: 1666: 1661: 1656: 1651: 1645: 1643: 1637: 1636: 1634: 1633: 1632: 1631: 1628: 1623: 1618: 1613: 1608: 1603: 1593: 1592: 1591: 1588: 1583: 1578: 1573: 1568: 1563: 1552: 1550: 1539: 1532: 1526: 1525: 1523: 1522: 1517: 1511: 1509: 1503: 1502: 1500: 1499: 1494: 1489: 1484: 1479: 1473: 1471: 1465: 1464: 1462: 1461: 1456: 1451: 1446: 1441: 1436: 1430: 1428: 1421: 1417: 1416: 1413: 1412: 1410: 1409: 1408: 1407: 1399: 1398: 1397: 1392: 1387: 1382: 1371: 1369: 1365: 1364: 1362: 1361: 1356: 1351: 1346: 1341: 1336: 1331: 1326: 1321: 1316: 1311: 1306: 1300: 1298: 1291: 1287: 1286: 1281: 1279: 1278: 1271: 1264: 1256: 1250: 1249: 1237: 1231: 1221: 1203: 1198: 1188: 1172: 1171:External links 1169: 1167: 1166: 1152: 1138: 1120: 1117:on 2014-04-22. 1096: 1078: 1060: 1042: 1024: 1010: 997:(2016-01-31). 986: 941: 923: 895: 870: 852: 830: 828: 825: 824: 823: 817: 811: 810: 809: 789: 788: 787: 763: 750: 745: 733: 732: 716: 713: 712: 711: 705: 699: 698:specification. 692: 652: 649: 644: 643:In-kernel ABIs 641: 627: 626:In-kernel APIs 624: 531: 530: 497: 495: 488: 482: 479: 478: 477: 470: 465:libevdev (for 463: 460: 451: 448: 433: 432: 424: 423: 422: 402: 390: 351: 342: 331: 316: 313: 312: 311: 302: 297: 292: 287: 282: 277: 250: 247: 223: 220: 153:Linux API vs. 106: 103: 102: 101: 98: 73: 72: 31: 29: 22: 15: 13: 10: 9: 6: 4: 3: 2: 3075: 3064: 3061: 3060: 3058: 3043: 3040: 3036: 3033: 3031: 3028: 3027: 3026: 3023: 3021: 3018: 3016: 3013: 3011: 3008: 3006: 3003: 3001: 2998: 2997: 2995: 2991: 2985: 2982: 2980: 2977: 2975: 2972: 2970: 2967: 2965: 2962: 2960: 2957: 2955: 2952: 2950: 2947: 2945: 2942: 2941: 2939: 2937: 2932: 2928: 2922: 2919: 2917: 2914: 2912: 2909: 2907: 2904: 2902: 2901:Memory paging 2899: 2897: 2894: 2892: 2889: 2888: 2886: 2883: 2878: 2874: 2864: 2861: 2859: 2856: 2854: 2851: 2849: 2846: 2845: 2843: 2841: 2835: 2829: 2826: 2824: 2821: 2819: 2816: 2814: 2811: 2809: 2806: 2804: 2801: 2799: 2796: 2794: 2791: 2788: 2784: 2780: 2777: 2776: 2774: 2770: 2767: 2765: 2761: 2751: 2748: 2746: 2743: 2741: 2740:Device driver 2738: 2737: 2735: 2731: 2725: 2722: 2720: 2717: 2715: 2712: 2710: 2707: 2705: 2702: 2700: 2697: 2695: 2692: 2690: 2687: 2686: 2684: 2682: 2681:Architectures 2678: 2675: 2673: 2669: 2663: 2660: 2658: 2655: 2653: 2650: 2648: 2645: 2643: 2640: 2638: 2635: 2633: 2630: 2628: 2625: 2623: 2620: 2618: 2615: 2614: 2612: 2608: 2602: 2599: 2597: 2594: 2592: 2589: 2587: 2584: 2582: 2579: 2577: 2574: 2572: 2569: 2568: 2566: 2562: 2558: 2551: 2546: 2544: 2539: 2537: 2532: 2531: 2528: 2516: 2515: 2506: 2504: 2503: 2492: 2490: 2489: 2484: 2478: 2477: 2474: 2464: 2461: 2460: 2458: 2454: 2448: 2445: 2441: 2438: 2436: 2433: 2432: 2430: 2426: 2423: 2422: 2421:Thin client: 2420: 2418: 2415: 2413: 2410: 2408: 2405: 2404: 2402: 2400: 2394: 2391: 2389: 2385: 2369: 2366: 2364: 2361: 2359: 2356: 2354: 2351: 2349: 2346: 2345: 2343: 2339: 2336: 2334: 2331: 2329: 2326: 2324: 2323:Linux-VServer 2321: 2320: 2319: 2316: 2312: 2309: 2307: 2304: 2303: 2302: 2299: 2298: 2296: 2294: 2290: 2282: 2279: 2277: 2274: 2273: 2271: 2268: 2264: 2261: 2259: 2256: 2254: 2251: 2249: 2246: 2245: 2244: 2241: 2237: 2234: 2232: 2229: 2227: 2224: 2223: 2222: 2219: 2215: 2212: 2210: 2207: 2206: 2205: 2202: 2201: 2199: 2195: 2189: 2186: 2184: 2181: 2179: 2176: 2174: 2171: 2169: 2166: 2164: 2161: 2160: 2157: 2154: 2150: 2147: 2145: 2142: 2141: 2140: 2137: 2136: 2133: 2130: 2128: 2125: 2123: 2120: 2118: 2115: 2113: 2110: 2108: 2105: 2103: 2099: 2096: 2095: 2092: 2089: 2087: 2084: 2082: 2079: 2077: 2074: 2072: 2069: 2067: 2064: 2061: 2058: 2055: 2052: 2050: 2047: 2044: 2041: 2040: 2037: 2034: 2032: 2029: 2027: 2024: 2022: 2019: 2017: 2014: 2012: 2009: 2007: 2004: 2002: 1999: 1997: 1994: 1992: 1989: 1987: 1984: 1982: 1979: 1976: 1973: 1971: 1968: 1966: 1963: 1961: 1958: 1956: 1953: 1951: 1948: 1946: 1945:Device mapper 1943: 1941: 1938: 1936: 1933: 1931: 1928: 1926: 1923: 1921: 1918: 1917: 1915: 1911: 1897: 1894: 1892: 1889: 1887: 1884: 1882: 1879: 1877: 1874: 1872: 1869: 1865: 1862: 1860: 1857: 1855: 1852: 1850: 1847: 1845: 1842: 1838: 1835: 1834: 1833: 1830: 1828: 1825: 1823: 1820: 1819: 1818: 1815: 1814: 1812: 1810: 1804: 1798: 1795: 1791: 1788: 1787: 1786: 1783: 1781: 1778: 1776: 1773: 1770: 1767: 1765: 1762: 1759: 1756: 1754: 1751: 1749: 1746: 1744: 1741: 1739: 1736: 1734: 1731: 1728: 1727: 1725: 1723: 1718: 1714: 1711: 1709: 1705: 1695: 1692: 1690: 1687: 1685: 1682: 1680: 1677: 1675: 1672: 1670: 1667: 1665: 1662: 1660: 1657: 1655: 1652: 1650: 1647: 1646: 1644: 1642: 1638: 1629: 1627: 1624: 1622: 1619: 1617: 1614: 1612: 1609: 1607: 1604: 1602: 1599: 1598: 1597: 1594: 1589: 1587: 1584: 1582: 1579: 1577: 1574: 1572: 1569: 1567: 1564: 1562: 1559: 1558: 1557: 1554: 1553: 1551: 1549: 1543: 1540: 1536: 1533: 1531: 1527: 1521: 1518: 1516: 1513: 1512: 1510: 1508: 1504: 1498: 1495: 1493: 1490: 1488: 1485: 1483: 1480: 1478: 1475: 1474: 1472: 1470: 1466: 1460: 1457: 1455: 1452: 1450: 1447: 1445: 1442: 1440: 1437: 1435: 1432: 1431: 1429: 1425: 1422: 1418: 1406: 1403: 1402: 1400: 1396: 1393: 1391: 1388: 1386: 1383: 1381: 1380: 1376: 1375: 1373: 1372: 1370: 1366: 1360: 1357: 1355: 1352: 1350: 1347: 1345: 1342: 1340: 1337: 1335: 1332: 1330: 1327: 1325: 1322: 1320: 1317: 1315: 1312: 1310: 1307: 1305: 1302: 1301: 1299: 1295: 1292: 1288: 1284: 1277: 1272: 1270: 1265: 1263: 1258: 1257: 1254: 1248: 1244: 1241: 1238: 1235: 1232: 1229: 1225: 1222: 1219: 1215: 1213: 1207: 1204: 1202: 1199: 1196: 1192: 1189: 1186: 1182: 1178: 1175: 1174: 1170: 1162: 1156: 1153: 1148: 1142: 1139: 1135:. 2014-03-19. 1134: 1130: 1124: 1121: 1116: 1112: 1111: 1106: 1100: 1097: 1093:. 2014-07-17. 1092: 1088: 1082: 1079: 1075:. 2011-06-08. 1074: 1070: 1064: 1061: 1057:. 2014-02-12. 1056: 1052: 1046: 1043: 1039:. 2014-02-27. 1038: 1034: 1028: 1025: 1020: 1014: 1011: 1000: 996: 990: 987: 983: 982: 980: 976: 971: 967: 966: 951: 945: 942: 938:. 2011-03-02. 937: 933: 927: 924: 920: 910: 906: 899: 896: 885: 881: 874: 871: 866: 862: 856: 853: 848: 844: 838: 836: 832: 826: 821: 818: 815: 812: 807: 803: 799: 796: 795: 793: 790: 785: 782: 777: 772: 767: 764: 761: 757: 756: 754: 751: 749: 746: 744: 740: 739: 735: 734: 730: 724: 719: 714: 710:: like above. 709: 706: 703: 700: 697: 693: 690: 686: 682: 678: 677: 676: 670: 665: 657: 650: 648: 642: 640: 638: 632: 625: 623: 621: 617: 613: 609: 604: 602: 598: 594: 590: 586: 582: 577: 575: 571: 567: 563: 559: 553: 549: 542: 537: 527: 524:February 2018 517: 513: 509: 505: 501: 498:This article 496: 487: 486: 480: 475: 471: 468: 464: 461: 458: 454: 453: 449: 447: 445: 441: 437: 429: 425: 419: 415: 414: 412: 407: 403: 401: 396: 391: 387: 381: 375: 369: 363: 357: 352: 349: 346: 343: 340: 336: 332: 329: 326: 325: 324: 322: 314: 310: 306: 303: 301: 298: 296: 293: 291: 288: 286: 283: 281: 278: 276: 273: 272: 271: 268: 260: 259:GNU C Library 255: 248: 246: 244: 239: 237: 233: 229: 221: 219: 216: 212: 207: 205: 201: 197: 193: 188: 183: 181: 176: 173: 169: 165: 156: 151: 144: 140: 136: 132: 128: 124: 120: 119:GNU C Library 116: 111: 104: 99: 96: 95: 94: 92: 88: 79: 69: 66: 58: 48: 44: 38: 37: 32:This article 30: 21: 20: 2936:file systems 2828:Time-sharing 2512: 2493: 2479: 2209:Linux kernel 2127:Tomoyo Linux 1722:File systems 1529: 1506: 1377: 1329:SCO disputes 1290:Organization 1283:Linux kernel 1211: 1155: 1141: 1123: 1115:the original 1108: 1099: 1081: 1063: 1045: 1027: 1013: 1002:. Retrieved 989: 969: 963: 961: 960: 954:. Retrieved 944: 926: 918: 912:. Retrieved 898: 887:. Retrieved 883: 873: 855: 805: 736: 729:Linux portal 674: 646: 636: 633: 629: 605: 578: 562:machine code 555: 521: 503: 499: 455:libdrm (for 444:X.Org Server 434: 418:memfd_create 347: 338: 319:As in other 318: 264: 245:and others. 240: 232:system calls 227: 225: 208: 184: 177: 167: 160: 114: 87:Linux kernel 84: 61: 52: 33: 2954:Device file 2944:Boot loader 2858:Round-robin 2783:Cooperative 2719:Rump kernel 2709:Multikernel 2699:Microkernel 2596:Usage share 2214:Linux-libre 2107:Exec Shield 1986:Framebuffer 1689:Video4Linux 1546:System Call 1374:Developers 1314:Linus's law 1214:API changes 792:Windows API 753:system call 472:libasound ( 413:developers 180:source code 2884:protection 2840:algorithms 2838:Scheduling 2787:Preemptive 2733:Components 2704:Monolithic 2571:Comparison 2301:Hypervisor 2263:PREEMPT_RT 2168:KernelCare 2156:Raw device 2086:SCHED_FIFO 1996:KMS driver 1913:Components 1768:securityfs 1654:Crypto API 1596:Linux-only 1482:System.map 1385:kernel.org 1344:menuconfig 1339:GNU GPL v2 1210:Linux and 1004:2016-02-04 956:2014-06-16 914:2014-08-26 889:2014-11-11 861:"libevdev" 827:References 601:endianness 595:(32-Bit), 2974:Partition 2891:Bus error 2818:Real-time 2798:Interrupt 2724:Unikernel 2689:Exokernel 2440:LYME-LYCE 2163:initramfs 2132:Linux PAM 2001:Netfilter 1871:libcgroup 1837:libhybris 1809:libraries 1757:hugetlbfs 1708:Userspace 1641:In-kernel 1626:readahead 1548:Interface 1497:initramfs 1454:SystemTap 1427:Debugging 1420:Technical 1359:Criticism 1105:"memfd.c" 970:POSIX API 965:Linux API 820:libhybris 798:windows.h 760:eventfd() 610:are e.g. 514: or 481:Linux ABI 428:readahead 395:getrandom 321:Unix-like 309:libhybris 305:libbionic 127:libcgroup 115:Linux API 105:Linux API 55:July 2014 3057:Category 3020:Live USB 2882:resource 2772:Concepts 2610:Variants 2591:Timeline 2514:Category 2456:Adopters 2431:Server: 2412:Embedded 2388:Adoption 2281:PSXLinux 2204:Mainline 2197:Variants 2149:graphics 2102:AppArmor 2091:SCHED_RR 2011:nftables 1955:dm-crypt 1950:dm-cache 1896:liburing 1886:libevdev 1844:dietlibc 1733:configfs 1659:io uring 1243:Archived 1133:Phoronix 884:linux.it 776:Alan Cox 715:See also 380:fanotify 300:dietlibc 139:libevdev 3015:Live CD 2969:Journal 2933:access, 2931:Storage 2808:Process 2714:vkernel 2581:History 2564:General 2447:Devices 2407:Desktop 2368:coLinux 2363:MkLinux 2348:L4Linux 2276:ÎĽClinux 2258:Xenomai 2248:RTLinux 2188:Ksplice 2117:SELinux 2112:seccomp 2062:(EEVDF) 2006:Netlink 1935:Console 1930:cgroups 1881:libalsa 1807:Wrapper 1785:systemd 1748:debugfs 1717:Daemons 1679:New API 1621:inotify 1616:dnotify 1520:x32 ABI 1477:vmlinux 1469:Startup 1368:Support 1230:version 1187:format) 1073:LWN.net 1055:LWN.net 936:LWN.net 784:drivers 766:netlink 597:ARMv8-A 593:ARMv7-A 548:x32 ABI 386:inotify 374:dnotify 328:cgroups 196:systemd 135:libalsa 41:Please 2823:Thread 2694:Hybrid 2672:Kernel 2417:Gaming 2399:of use 2353:ELinOS 2344:Other 2338:OpenVZ 2328:Lguest 2272:-less 2183:kpatch 2178:kGraft 2144:802.11 1940:bcache 1891:libusb 1876:libdrm 1864:Newlib 1849:EGLIBC 1832:Bionic 1827:uClibc 1797:Kmscon 1771:sockfs 1764:procfs 1760:pipefs 1743:devpts 1669:kernfs 1611:splice 1566:select 1538:Kernel 1492:initrd 1487:dracut 1439:ftrace 1401:Users 1334:Linaro 1297:Kernel 1216:since 1208:book, 1185:sphinx 1110:GitHub 696:OpenAL 685:Vulkan 681:OpenGL 669:Vulkan 637:stable 585:x86-64 383:, and 368:splice 290:Newlib 280:uClibc 213:2016, 211:FOSDEM 200:Weston 131:libdrm 3025:Shell 2964:Inode 2397:Range 2236:SLURM 2173:kexec 2122:Smack 2056:(CFS) 2036:zswap 1977:(KSM) 1970:evdev 1925:BlueZ 1854:klibc 1822:glibc 1780:tmpfs 1775:sysfs 1738:devfs 1729:bpffs 1606:epoll 1601:futex 1581:close 1561:ioctl 1556:POSIX 1444:kdump 1212:glibc 1183:(new 979:POSIX 771:ioctl 620:Clang 467:evdev 411:kdbus 406:memfd 362:epoll 356:futex 348:could 285:klibc 275:glibc 172:POSIX 155:POSIX 2586:List 2435:LAMP 2425:LTSP 2253:RTAI 2031:zram 2026:SLUB 2021:perf 1965:EDAC 1859:musl 1790:udev 1753:FUSE 1649:ALSA 1586:sync 1576:read 1571:open 1530:APIs 1507:ABIs 1434:CRIU 1390:LKML 1195:4.12 1193:and 1091:LKML 1037:LKML 814:Wine 781:WNIC 689:Mesa 683:and 616:LLVM 589:MIPS 572:and 550:and 307:and 295:musl 257:The 226:The 198:and 192:udev 141:(by 137:and 121:(by 113:The 85:The 3042:PXE 3030:CLI 3010:HAL 3000:API 2803:IPC 2333:LXC 2311:Xen 2306:KVM 2270:MMU 2226:INK 1991:LVM 1981:LIO 1960:DRM 1694:IIO 1684:RCU 1664:DRM 1459:BPF 1324:Tux 1228:PDF 806:all 741:by 581:x86 541:ABI 436:DRM 339:not 209:At 157:API 125:), 123:GNU 3059:: 2785:, 2100:: 1179:, 1131:. 1107:. 1089:. 1071:. 1053:. 1035:. 959:. 934:. 917:. 907:. 882:. 863:. 845:. 834:^ 622:. 614:, 591:, 587:, 583:, 510:, 377:, 371:, 365:, 265:A 194:, 145:). 133:, 129:, 2879:, 2789:) 2781:( 2549:e 2542:t 2535:v 2045:: 1719:, 1630:… 1590:… 1275:e 1268:t 1261:v 1149:. 1021:. 1007:. 892:. 867:. 849:. 691:. 618:/ 526:) 522:( 476:) 469:) 459:) 68:) 62:( 57:) 53:( 49:.

Index

personal reflection, personal essay, or argumentative essay
help improve it
encyclopedic style
Learn how and when to remove this message

Linux kernel
application programming interface

GNU C Library
GNU
libcgroup
libdrm
libalsa
libevdev
freedesktop.org

POSIX
C standard library
POSIX
source code
free and open-source software
udev
systemd
Weston
Lennart Poettering
FOSDEM
Michael Kerrisk
system calls
Direct Rendering Manager
Michael Kerrisk

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑