Knowledge (XXG)

Linux kernel interfaces

Source đź“ť

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

Index

Linux API
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

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

↑