CINXE.COM

Linux kernel interfaces - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Linux kernel interfaces - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy", "wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"b6c0669e-10e8-4d65-920f-16fa99c433c4","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Linux_kernel_interfaces","wgTitle":"Linux kernel interfaces","wgCurRevisionId":1250593013,"wgRevisionId":1250593013,"wgArticleId":2212634,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description is different from Wikidata","Wikipedia articles with style issues from July 2014","All articles with style issues","All articles with unsourced statements","Articles with unsourced statements from November 2014","Articles with unsourced statements from July 2014","Articles needing expert attention from February 2018","All articles needing expert attention", "Free and open-source software articles needing expert attention","Software articles needing expert attention","Computing articles needing expert attention","Webarchive template wayback links","Interfaces of the Linux kernel"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Linux_kernel_interfaces","wgRelevantArticleId":2212634,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgRelatedArticlesCompat":[] ,"wgCentralAuthMobileDomain":false,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q6555064","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser":false};RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready", "ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","mediawiki.page.media","ext.scribunto.logs","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession","wikibase.sidebar.tracking"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediaBadges%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.4"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Linux_kernel_interfaces.svg/1200px-Linux_kernel_interfaces.svg.png"> <meta property="og:image:width" content="1200"> <meta property="og:image:height" content="900"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Linux_kernel_interfaces.svg/800px-Linux_kernel_interfaces.svg.png"> <meta property="og:image:width" content="800"> <meta property="og:image:height" content="600"> <meta property="og:image" content="https://upload.wikimedia.org/wikipedia/commons/thumb/6/68/Linux_kernel_interfaces.svg/640px-Linux_kernel_interfaces.svg.png"> <meta property="og:image:width" content="640"> <meta property="og:image:height" content="480"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Linux kernel interfaces - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Linux_kernel_interfaces"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Linux_kernel_interfaces"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Linux_kernel_interfaces rootpage-Linux_kernel_interfaces skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Linux+kernel+interfaces" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=Linux+kernel+interfaces" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=C13_en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Linux+kernel+interfaces" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Linux+kernel+interfaces" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Linux_API" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Linux_API"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Linux API</span> </div> </a> <button aria-controls="toc-Linux_API-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Linux API subsection</span> </button> <ul id="toc-Linux_API-sublist" class="vector-toc-list"> <li id="toc-System_call_interface_of_the_Linux_kernel" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#System_call_interface_of_the_Linux_kernel"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>System call interface of the Linux kernel</span> </div> </a> <ul id="toc-System_call_interface_of_the_Linux_kernel-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-The_C_standard_library" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#The_C_standard_library"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>The C standard library</span> </div> </a> <ul id="toc-The_C_standard_library-sublist" class="vector-toc-list"> <li id="toc-Additions_to_POSIX" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Additions_to_POSIX"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2.1</span> <span>Additions to POSIX</span> </div> </a> <ul id="toc-Additions_to_POSIX-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Further_libraries" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Further_libraries"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.3</span> <span>Further libraries</span> </div> </a> <ul id="toc-Further_libraries-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Linux_ABI" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Linux_ABI"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Linux ABI</span> </div> </a> <ul id="toc-Linux_ABI-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-In-kernel_APIs" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#In-kernel_APIs"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>In-kernel APIs</span> </div> </a> <ul id="toc-In-kernel_APIs-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-In-kernel_ABIs" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#In-kernel_ABIs"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>In-kernel ABIs</span> </div> </a> <ul id="toc-In-kernel_ABIs-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Abstraction_APIs" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Abstraction_APIs"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Abstraction APIs</span> </div> </a> <ul id="toc-Abstraction_APIs-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-See_also" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#See_also"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>See also</span> </div> </a> <ul id="toc-See_also-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Linux kernel interfaces</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 5 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-5" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">5 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D9%88%D8%A7%D8%AC%D9%87%D8%A9_%D9%86%D9%88%D8%A7%D8%A9_%D9%84%D9%8A%D9%86%D9%83%D8%B3" title="واجهة نواة لينكس – Arabic" lang="ar" hreflang="ar" data-title="واجهة نواة لينكس" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Interf%C3%ADcies_del_nucli_de_Linux" title="Interfícies del nucli de Linux – Catalan" lang="ca" hreflang="ca" data-title="Interfícies del nucli de Linux" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%BB%A4%EB%84%90_%EC%9D%B8%ED%84%B0%ED%8E%98%EC%9D%B4%EC%8A%A4" title="리눅스 커널 인터페이스 – Korean" lang="ko" hreflang="ko" data-title="리눅스 커널 인터페이스" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-no badge-Q70893996 mw-list-item" title=""><a href="https://no.wikipedia.org/wiki/Linuxkjernens_grensesnitt" title="Linuxkjernens grensesnitt – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Linuxkjernens grensesnitt" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/Giao_di%E1%BB%87n_nh%C3%A2n_Linux" title="Giao diện nhân Linux – Vietnamese" lang="vi" hreflang="vi" data-title="Giao diện nhân Linux" data-language-autonym="Tiếng Việt" data-language-local-name="Vietnamese" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q6555064#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Linux_kernel_interfaces" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Linux_kernel_interfaces" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Linux_kernel_interfaces"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Linux_kernel_interfaces"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Linux_kernel_interfaces" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Linux_kernel_interfaces" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q"><span>Special pages</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Linux_kernel_interfaces&amp;oldid=1250593013" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=Linux_kernel_interfaces&amp;id=1250593013&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FLinux_kernel_interfaces"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FLinux_kernel_interfaces"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Linux_kernel_interfaces&amp;action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Linux_kernel_interfaces&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q6555064" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">An overview and comparison of the Linux kernel API and ABI.</div> <style data-mw-deduplicate="TemplateStyles:r1251242444">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}@media print{body.ns-0 .mw-parser-output .ambox{display:none!important}}</style><table class="box-Essay-like plainlinks metadata ambox ambox-style ambox-essay-like" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/40px-Edit-clear.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/60px-Edit-clear.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/80px-Edit-clear.svg.png 2x" data-file-width="48" data-file-height="48" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span">This article <b>is written like a <a href="/wiki/Wikipedia:What_Wikipedia_is_not#Wikipedia_is_not_a_publisher_of_original_thought" title="Wikipedia:What Wikipedia is not">personal reflection, personal essay, or argumentative essay</a></b> that states a Wikipedia editor's personal feelings or presents an original argument about a topic.<span class="hide-when-compact"> Please <a class="external text" href="https://en.wikipedia.org/w/index.php?title=Linux_kernel_interfaces&amp;action=edit">help improve it</a> by rewriting it in an <a href="/wiki/Wikipedia:Writing_better_articles#Information_style_and_tone" title="Wikipedia:Writing better articles">encyclopedic style</a>.</span> <span class="date-container"><i>(<span class="date">July 2014</span>)</i></span><span class="hide-when-compact"><i> (<small><a href="/wiki/Help:Maintenance_template_removal" title="Help:Maintenance template removal">Learn how and when to remove this message</a></small>)</i></span></div></td></tr></tbody></table> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Linux_kernel_interfaces.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/6/68/Linux_kernel_interfaces.svg/330px-Linux_kernel_interfaces.svg.png" decoding="async" width="330" height="248" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/68/Linux_kernel_interfaces.svg/495px-Linux_kernel_interfaces.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/68/Linux_kernel_interfaces.svg/660px-Linux_kernel_interfaces.svg.png 2x" data-file-width="1536" data-file-height="1152" /></a><figcaption>Linux API, Linux ABI, and in-kernel APIs and ABIs</figcaption></figure> <p>The <a href="/wiki/Linux_kernel" title="Linux kernel">Linux kernel</a> 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 <a href="/wiki/Application_programming_interface" class="mw-redirect" title="Application programming interface">application programming interface</a> (API) in the Linux kernel: </p> <ol><li>the "kernel&#8211;user space" API; and</li> <li>the "kernel internal" API.</li></ol> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Linux_API"><span class="anchor" id="Linux_API"></span>Linux API</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=1" title="Edit section: Linux API"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Linux_API.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Linux_API.svg/330px-Linux_API.svg.png" decoding="async" width="330" height="186" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Linux_API.svg/495px-Linux_API.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/Linux_API.svg/660px-Linux_API.svg.png 2x" data-file-width="1920" data-file-height="1080" /></a><figcaption>The <b>Linux API</b> is composed out of the system call interface of the Linux kernel, the <a href="/wiki/GNU_C_Library" class="mw-redirect" title="GNU C Library">GNU C Library</a> (by <a href="/wiki/GNU" title="GNU">GNU</a>), <a href="/wiki/Cgroups" title="Cgroups">libcgroup</a>,<sup id="cite_ref-libcgroup_1-0" class="reference"><a href="#cite_note-libcgroup-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup> <a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">libdrm</a>, <a href="/wiki/Advanced_Linux_Sound_Architecture" title="Advanced Linux Sound Architecture">libalsa</a> and <a href="/wiki/Evdev" title="Evdev">libevdev</a><sup id="cite_ref-libevdev_2-0" class="reference"><a href="#cite_note-libevdev-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup> (by <a href="/wiki/Freedesktop.org" title="Freedesktop.org">freedesktop.org</a>).</figcaption></figure> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Linux_kernel_API.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Linux_kernel_API.svg/330px-Linux_kernel_API.svg.png" decoding="async" width="330" height="186" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/43/Linux_kernel_API.svg/495px-Linux_kernel_API.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/43/Linux_kernel_API.svg/660px-Linux_kernel_API.svg.png 2x" data-file-width="1280" data-file-height="720" /></a><figcaption>Linux API vs. <a href="/wiki/POSIX" title="POSIX">POSIX</a> API</figcaption></figure> <p>The Linux API includes the kernel&#8211;user space API, which allows code in user space to access system resources and services of the Linux kernel.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup> It is composed of the system call interface of the Linux kernel and the subroutines in the <a href="/wiki/C_standard_library" title="C standard library">C standard library</a>. The focus of the development of the Linux API has been to provide the <i>usable features</i> of the specifications defined in <a href="/wiki/POSIX" title="POSIX">POSIX</a> in a way which is reasonably compatible, robust and performant, and to provide additional useful features not defined in POSIX, just as the kernel&#8211;user space APIs of other systems implementing the POSIX API also provide additional features not defined in POSIX. </p><p>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 <a href="/wiki/Source_code" title="Source code">source code</a>.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup> At the same time, Linux kernel developers have historically been conservative and meticulous about introducing new system calls.<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (November 2014)">citation needed</span></a></i>&#93;</sup> </p><p>Much available <a href="/wiki/Free_and_open-source_software" title="Free and open-source software">free and open-source software</a> 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,<sup class="noprint Inline-Template Template-Fact" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Citation_needed" title="Wikipedia:Citation needed"><span title="This claim needs references to reliable sources. (July 2014)">citation needed</span></a></i>&#93;</sup> the Linux kernel and its API have been augmented with additional features. Programming for the full Linux API, rather than just the POSIX API, may provide advantages in cases where those additional features are useful. Well-known current examples are <a href="/wiki/Udev" title="Udev">udev</a>, <a href="/wiki/Systemd" title="Systemd">systemd</a> and <a href="/wiki/Weston_(software)" class="mw-redirect" title="Weston (software)">Weston</a>.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">&#91;</span>5<span class="cite-bracket">&#93;</span></a></sup> People such as <a href="/wiki/Lennart_Poettering" title="Lennart Poettering">Lennart Poettering</a> openly advocate to prefer the Linux API over the POSIX API, where this offers advantages.<sup id="cite_ref-fosdem1_6-0" class="reference"><a href="#cite_note-fosdem1-6"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup> </p><p>At <a href="/wiki/FOSDEM" title="FOSDEM">FOSDEM</a> 2016, <a href="/wiki/Michael_Kerrisk" title="Michael Kerrisk">Michael Kerrisk</a> 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 doing so would break the ABI that the kernel presents to the user space.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">&#91;</span>7<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="System_call_interface_of_the_Linux_kernel"><span class="anchor" id="System_Call_Interface"></span><span class="anchor" id="SCI"></span> System call interface of the Linux kernel</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=2" title="Edit section: System call interface of the Linux kernel"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <i>system call interface</i> of a kernel is the set of all implemented and available <a href="/wiki/System_calls" class="mw-redirect" title="System calls">system calls</a> in a kernel. In the Linux kernel, various subsystems, such as the <a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">Direct Rendering Manager</a> (DRM), define their own system calls, all of which are part of the system call interface. </p><p>Various issues with the organization of the Linux kernel system calls are being publicly discussed. Issues have been pointed out by Andy Lutomirski, <a href="/wiki/Michael_Kerrisk" title="Michael Kerrisk">Michael Kerrisk</a> and others.<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">&#91;</span>8<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">&#91;</span>10<span class="cite-bracket">&#93;</span></a></sup><sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">&#91;</span>11<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="The_C_standard_library">The C standard library</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=3" title="Edit section: The C standard library"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Linux_kernel_System_Call_Interface_and_glibc.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/4/45/Linux_kernel_System_Call_Interface_and_glibc.svg/330px-Linux_kernel_System_Call_Interface_and_glibc.svg.png" decoding="async" width="330" height="248" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/45/Linux_kernel_System_Call_Interface_and_glibc.svg/495px-Linux_kernel_System_Call_Interface_and_glibc.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/4/45/Linux_kernel_System_Call_Interface_and_glibc.svg/660px-Linux_kernel_System_Call_Interface_and_glibc.svg.png 2x" data-file-width="1440" data-file-height="1080" /></a><figcaption>The <a href="/wiki/GNU_C_Library" class="mw-redirect" title="GNU C Library">GNU C Library</a> is a wrapper around the Linux kernel system call interface.</figcaption></figure> <p>A <a href="/wiki/C_standard_library" title="C standard library">C standard library</a> 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 </p> <ul><li><a href="/wiki/Glibc" title="Glibc">glibc</a></li> <li><a href="/wiki/UClibc" title="UClibc">uClibc</a></li> <li><a href="/wiki/Klibc" title="Klibc">klibc</a></li> <li><a href="/wiki/Newlib" title="Newlib">Newlib</a></li> <li><a href="/wiki/Musl" title="Musl">musl</a></li> <li><a href="/wiki/Dietlibc" title="Dietlibc">dietlibc</a></li> <li><a href="/wiki/Bionic_(software)" title="Bionic (software)">libbionic</a> and <a href="/wiki/Hybris_(software)" class="mw-redirect" title="Hybris (software)">libhybris</a></li></ul> <div class="mw-heading mw-heading4"><h4 id="Additions_to_POSIX">Additions to POSIX</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=4" title="Edit section: Additions to POSIX"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>As in other <a href="/wiki/Unix-like" title="Unix-like">Unix-like</a> systems, additional capabilities of the Linux kernel exist that are not part of POSIX: </p> <ul><li><a href="/wiki/Cgroups" title="Cgroups">cgroups</a> subsystem, the system calls it introduces and libcgroup<sup id="cite_ref-libcgroup_1-1" class="reference"><a href="#cite_note-libcgroup-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup></li> <li>The system calls of the <a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">Direct Rendering Manager</a>, especially the driver-private ioctls for the command submission, are <i>not</i> part of the POSIX specifications.</li> <li><a href="/wiki/Advanced_Linux_Sound_Architecture" title="Advanced Linux Sound Architecture">Advanced Linux Sound Architecture</a> <i>could</i> set system calls, which are not part of the POSIX specifications</li> <li>The system calls <code><a href="/wiki/Futex" title="Futex">futex</a></code> (fast userspace mutex), <code><a href="/wiki/Epoll" title="Epoll">epoll</a></code>, <code><a href="/wiki/Splice_(system_call)" title="Splice (system call)">splice</a></code>, <code><a href="/wiki/Dnotify" title="Dnotify">dnotify</a></code>, <code><a href="/wiki/Fanotify" class="mw-redirect" title="Fanotify">fanotify</a></code>, and <code><a href="/wiki/Inotify" title="Inotify">inotify</a></code> have been exclusive to the Linux kernel so far.</li> <li>The system call <code><a href="/wiki/Getrandom" class="mw-redirect" title="Getrandom">getrandom</a></code> was introduced in version 3.17 of the <a href="/wiki/Linux_kernel_mainline" class="mw-redirect" title="Linux kernel mainline">Linux kernel mainline</a><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">&#91;</span>12<span class="cite-bracket">&#93;</span></a></sup></li> <li><code><a href="/w/index.php?title=Memfd&amp;action=edit&amp;redlink=1" class="new" title="Memfd (page does not exist)">memfd</a></code> was proposed by the <a href="/wiki/Kdbus" class="mw-redirect" title="Kdbus">kdbus</a> developers<sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">&#91;</span>13<span class="cite-bracket">&#93;</span></a></sup> <ul><li><code><a href="/w/index.php?title=Memfd_create&amp;action=edit&amp;redlink=1" class="new" title="Memfd create (page does not exist)">memfd_create</a></code> was merged into the Linux kernel mainline in kernel version 3.17</li></ul></li> <li><code><a href="/wiki/Readahead" title="Readahead">readahead</a></code> initiates a file "read-ahead" into page cache</li></ul> <p><a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">DRM</a> has been paramount for the development and implementations of well-defined and performant <a href="/wiki/Free_and_open-source_graphics_device_driver#Software_architecture" title="Free and open-source graphics device driver">free and open-source graphics device drivers</a> without which no rendering acceleration would be available at all, only the 2D drivers would be available in the <a href="/wiki/X.Org_Server" title="X.Org Server">X.Org Server</a>. DRM was developed for Linux, and since has been ported to other operating systems as well.<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">&#91;</span>14<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Further_libraries">Further libraries</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=5" title="Edit section: Further libraries"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>libdrm (for <a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">Direct Rendering Manager</a>)</li> <li>libnl (The libnl suite is a collection of libraries providing APIs to netlink protocol based Linux kernel interfaces.)</li> <li>libevdev (for <a href="/wiki/Evdev" title="Evdev">evdev</a>)</li> <li>libasound (<a href="/wiki/Advanced_Linux_Sound_Architecture" title="Advanced Linux Sound Architecture">Advanced Linux Sound Architecture</a>)</li></ul> <div class="mw-heading mw-heading2"><h2 id="Linux_ABI">Linux ABI</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=6" title="Edit section: Linux ABI"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1251242444"><table class="box-Expert_needed plainlinks metadata ambox ambox-content" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/40px-Ambox_important.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/60px-Ambox_important.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/b/b4/Ambox_important.svg/80px-Ambox_important.svg.png 2x" data-file-width="40" data-file-height="40" /></span></span></div></td><td class="mbox-text"><div class="mbox-text-span">This article <b>needs attention from an expert in Free and open-source software, Software&#32;or Computing</b>. The specific problem is: <b>This section mostly ignores the kernel-userspace ABI (that is very real and important thing) and jumps into userspace-to-userspace APIs.</b><span class="hide-when-compact"> <a href="/wiki/Wikipedia:WikiProject_Free_and_open-source_software" class="mw-redirect" title="Wikipedia:WikiProject Free and open-source software">WikiProject Free and open-source software</a>, <a href="/wiki/Wikipedia:WikiProject_Software" title="Wikipedia:WikiProject Software">WikiProject Software</a>&#160;or <a href="/wiki/Wikipedia:WikiProject_Computing" title="Wikipedia:WikiProject Computing">WikiProject Computing</a> may be able to help recruit an expert.</span> <span class="date-container"><i>(<span class="date">February 2018</span>)</i></span></div></td></tr></tbody></table> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Linux_API_and_Linux_ABI.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Linux_API_and_Linux_ABI.svg/330px-Linux_API_and_Linux_ABI.svg.png" decoding="async" width="330" height="248" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Linux_API_and_Linux_ABI.svg/495px-Linux_API_and_Linux_ABI.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/bb/Linux_API_and_Linux_ABI.svg/660px-Linux_API_and_Linux_ABI.svg.png 2x" data-file-width="1440" data-file-height="1080" /></a><figcaption>The Linux API and the Linux <a href="/wiki/Application_binary_interface" title="Application binary interface">ABI</a> </figcaption></figure> <style data-mw-deduplicate="TemplateStyles:r1236090951">.mw-parser-output .hatnote{font-style:italic}.mw-parser-output div.hatnote{padding-left:1.6em;margin-bottom:0.5em}.mw-parser-output .hatnote i{font-style:normal}.mw-parser-output .hatnote+link+.hatnote{margin-top:-0.5em}@media print{body.ns-0 .mw-parser-output .hatnote{display:none!important}}</style><div role="note" class="hatnote navigation-not-searchable">Main articles: <a href="/wiki/X32_ABI" title="X32 ABI">x32 ABI</a> and <a href="/wiki/Linux_Standard_Base" title="Linux Standard Base">Linux Standard Base</a></div> <p>The term Linux ABI refers to a kernel–user space ABI. The <a href="/wiki/Application_binary_interface" title="Application binary interface">application binary interface</a> refers to the compiled binaries, in <a href="/wiki/Machine_code" title="Machine code">machine code</a>. Any such ABI is therefore bound to the <a href="/wiki/Instruction_set" class="mw-redirect" title="Instruction set">instruction set</a>. 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 <a href="/wiki/Linux_distribution" title="Linux distribution">Linux distributions</a> and <a href="/wiki/Independent_software_vendor" title="Independent software vendor">independent software vendors</a> (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. </p><p>An ABI has to be defined for every instruction set, such as <a href="/wiki/X86" title="X86">x86</a>, <a href="/wiki/X86-64" title="X86-64">x86-64</a>, <a href="/wiki/MIPS_architecture" title="MIPS architecture">MIPS</a>, <a href="/wiki/ARMv7-A" class="mw-redirect" title="ARMv7-A">ARMv7-A</a> (32-Bit), <a href="/wiki/ARMv8-A" class="mw-redirect" title="ARMv8-A">ARMv8-A</a> (64-Bit), etc. with the <a href="/wiki/Endianness" title="Endianness">endianness</a>, if both are supported. </p><p>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 <a href="/wiki/Free_and_open-source_software" title="Free and open-source software">free and open-source software</a> are e.g. <a href="/wiki/GNU_Compiler_Collection" title="GNU Compiler Collection">GNU Compiler Collection</a>, <a href="/wiki/LLVM" title="LLVM">LLVM</a>/<a href="/wiki/Clang" title="Clang">Clang</a>. </p> <div class="mw-heading mw-heading2"><h2 id="In-kernel_APIs">In-kernel APIs</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=7" title="Edit section: In-kernel APIs"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>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 testing have to be done by the author. </p><p>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 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 <i>stable</i> in-kernel API.<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">&#91;</span>15<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="In-kernel_ABIs">In-kernel ABIs</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=8" title="Edit section: In-kernel ABIs"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Since there are no stable in-kernel APIs, there cannot be stable in-kernel ABIs.<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">&#91;</span>16<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Abstraction_APIs">Abstraction APIs</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=9" title="Edit section: Abstraction APIs"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Linux_kernel_and_OpenGL_video_games.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/9/99/Linux_kernel_and_OpenGL_video_games.svg/220px-Linux_kernel_and_OpenGL_video_games.svg.png" decoding="async" width="220" height="165" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/9/99/Linux_kernel_and_OpenGL_video_games.svg/330px-Linux_kernel_and_OpenGL_video_games.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/99/Linux_kernel_and_OpenGL_video_games.svg/440px-Linux_kernel_and_OpenGL_video_games.svg.png 2x" data-file-width="960" data-file-height="720" /></a><figcaption>OpenGL is indeed an abstraction API to make use of diverse GPUs of multiple vendors without the need to program for each one specifically.</figcaption></figure> <figure class="mw-default-size" typeof="mw:File/Thumb"><a href="/wiki/File:Division_of_labor_cpu_and_gpu.svg" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Division_of_labor_cpu_and_gpu.svg/220px-Division_of_labor_cpu_and_gpu.svg.png" decoding="async" width="220" height="124" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Division_of_labor_cpu_and_gpu.svg/330px-Division_of_labor_cpu_and_gpu.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Division_of_labor_cpu_and_gpu.svg/440px-Division_of_labor_cpu_and_gpu.svg.png 2x" data-file-width="960" data-file-height="540" /></a><figcaption>But the implementation of the OpenGL-specification is executed on the CPU in the context of the running operating system. One design goal of <a href="/wiki/Vulkan_(API)" class="mw-redirect" title="Vulkan (API)">Vulkan</a> was to make the "graphics driver", i.e. the implementation of the graphics API, do less.</figcaption></figure> <p>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: </p> <ul><li>Implementation of the <a href="/wiki/OpenGL" title="OpenGL">OpenGL</a> and <a href="/wiki/Vulkan_(API)" class="mw-redirect" title="Vulkan (API)">Vulkan</a> specifications in proprietary Linux graphics drivers and the free and open-source implementation in <a href="/wiki/Mesa_(computer_graphics)" title="Mesa (computer graphics)">Mesa</a>.</li> <li>Implementation of the <a href="/wiki/OpenAL" title="OpenAL">OpenAL</a> specification.</li> <li><a href="/wiki/Simple_DirectMedia_Layer" title="Simple DirectMedia Layer">Simple DirectMedia Layer</a>: abstraction API for input/sound/etc. available for many operating systems.</li> <li><a href="/wiki/Simple_and_Fast_Multimedia_Library" title="Simple and Fast Multimedia Library">Simple and Fast Multimedia Library</a>: like above.</li></ul> <div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=10" title="Edit section: See also"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239009302">.mw-parser-output .portalbox{padding:0;margin:0.5em 0;display:table;box-sizing:border-box;max-width:175px;list-style:none}.mw-parser-output .portalborder{border:1px solid var(--border-color-base,#a2a9b1);padding:0.1em;background:var(--background-color-neutral-subtle,#f8f9fa)}.mw-parser-output .portalbox-entry{display:table-row;font-size:85%;line-height:110%;height:1.9em;font-style:italic;font-weight:bold}.mw-parser-output .portalbox-image{display:table-cell;padding:0.2em;vertical-align:middle;text-align:center}.mw-parser-output .portalbox-link{display:table-cell;padding:0.2em 0.2em 0.2em 0.3em;vertical-align:middle}@media(min-width:720px){.mw-parser-output .portalleft{clear:left;float:left;margin:0.5em 1em 0.5em 0}.mw-parser-output .portalright{clear:right;float:right;margin:0.5em 0 0.5em 1em}}</style><ul role="navigation" aria-label="Portals" class="noprint portalbox portalborder portalright"> <li class="portalbox-entry"><span class="portalbox-image"><span class="noviewer" typeof="mw:File"><a href="/wiki/File:NewTux.svg" class="mw-file-description"><img alt="icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/23px-NewTux.svg.png" decoding="async" width="23" height="28" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/35px-NewTux.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/47px-NewTux.svg.png 2x" data-file-width="625" data-file-height="750" /></a></span></span><span class="portalbox-link"><a href="/wiki/Portal:Linux" title="Portal:Linux">Linux portal</a></span></li></ul> <ul><li><i><a href="/wiki/The_Linux_Programming_Interface" title="The Linux Programming Interface">The Linux Programming Interface</a></i> by <a href="/wiki/Michael_Kerrisk" title="Michael Kerrisk">Michael Kerrisk</a></li> <li><a href="/wiki/Semaphore_(programming)" title="Semaphore (programming)">Semaphore (programming)</a></li> <li><a href="/wiki/System_call" title="System call">system call</a>&#160;&#8211;&#32; is a function to facilitate programs to request services from the kernel <ul><li><style data-mw-deduplicate="TemplateStyles:r886049734">.mw-parser-output .monospaced{font-family:monospace,monospace}</style><span class="monospaced"><a href="/wiki/File_descriptor" title="File descriptor">eventfd()</a></span></li> <li><a href="/wiki/Netlink" title="Netlink">netlink</a>&#160;&#8211;&#32; socket family used for IPC between kernel and user space processes, designed as the successor of <link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r886049734"><span class="monospaced"><a href="/wiki/Ioctl" title="Ioctl">ioctl</a></span>; Netlink was added by <a href="/wiki/Alan_Cox_(computer_programmer)" title="Alan Cox (computer programmer)">Alan Cox</a> 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 infrastructure. Since then, Netlink sockets have become one of the main interfaces that kernel subsystems provide to user-space applications in Linux. Modern <a href="/wiki/Wireless_network_interface_controller" title="Wireless network interface controller">WNIC</a> <a href="/wiki/Comparison_of_open-source_wireless_drivers" title="Comparison of open-source wireless drivers">drivers</a> use it to communicate with user-space.</li></ul></li> <li><a href="/wiki/Windows_API" title="Windows API">Windows API</a>&#160;&#8211;&#32; article on various API available on Microsoft Windows operating systems <ul><li><a href="/wiki/Windows.h" title="Windows.h">windows.h</a>&#160;&#8211;&#32; header file for the <a href="/wiki/C_(programming_language)" title="C (programming language)">C programming language</a> which contains declarations for <i>all</i> of the functions in the Windows API</li></ul></li> <li><a href="/wiki/Wine_(software)" title="Wine (software)">Wine</a>&#160;&#8211;&#32; a compatibility layer between Linux and programs written for Microsoft Windows</li> <li><a href="/wiki/Hybris_(software)" class="mw-redirect" title="Hybris (software)">libhybris</a> – compatibility layer between Linux and programs written for Android</li></ul> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=11" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist reflist-columns references-column-width" style="column-width: 30em;"> <ol class="references"> <li id="cite_note-libcgroup-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-libcgroup_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-libcgroup_1-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/">"ControlGroupInterface"</a>. <a href="/wiki/Freedesktop.org" title="Freedesktop.org">freedesktop.org</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=ControlGroupInterface&amp;rft.pub=freedesktop.org&amp;rft_id=https%3A%2F%2Fwww.freedesktop.org%2Fwiki%2FSoftware%2Fsystemd%2FControlGroupInterface%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-libevdev-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-libevdev_2-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.freedesktop.org/wiki/Software/libevdev/">"libevdev"</a>. <a href="/wiki/Freedesktop.org" title="Freedesktop.org">freedesktop.org</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=libevdev&amp;rft.pub=freedesktop.org&amp;rft_id=http%3A%2F%2Fwww.freedesktop.org%2Fwiki%2FSoftware%2Flibevdev%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFAlessandro_Rubini2006" class="citation web cs1">Alessandro Rubini (2006-11-02). <a rel="nofollow" class="external text" href="http://www.linux.it/~rubini/docs/ksys/ksys.html">"Kernel System Calls"</a>. <i>linux.it</i><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-11-11</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=linux.it&amp;rft.atitle=Kernel+System+Calls&amp;rft.date=2006-11-02&amp;rft.au=Alessandro+Rubini&amp;rft_id=http%3A%2F%2Fwww.linux.it%2F~rubini%2Fdocs%2Fksys%2Fksys.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFLinus_Torvalds2012" class="citation web cs1">Linus Torvalds (2012-12-23). <a rel="nofollow" class="external text" href="https://lkml.org/lkml/2012/12/23/75">"Re: &#91;Regression w/ patch&#93; Media commit causes user space to misbahave (was: Re: Linux 3.8-rc1)"</a>. <a href="/wiki/Linux_kernel_mailing_list" title="Linux kernel mailing list">Linux kernel mailing list</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2014-08-26</span></span>. <q>If a change results in user programs breaking, it's a bug in the kernel. We never EVER blame the user programs.</q></cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Re%3A+%5BRegression+w%2F+patch%5D+Media+commit+causes+user+space+to+misbahave+%28was%3A+Re%3A+Linux+3.8-rc1%29&amp;rft.pub=Linux+kernel+mailing+list&amp;rft.date=2012-12-23&amp;rft.au=Linus+Torvalds&amp;rft_id=https%3A%2F%2Flkml.org%2Flkml%2F2012%2F12%2F23%2F75&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lwn.net/Articles/430598/">"Choosing between portability and innovation"</a>. <a href="/wiki/LWN.net" title="LWN.net">LWN.net</a>. 2011-03-02.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Choosing+between+portability+and+innovation&amp;rft.pub=LWN.net&amp;rft.date=2011-03-02&amp;rft_id=https%3A%2F%2Flwn.net%2FArticles%2F430598%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-fosdem1-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-fosdem1_6-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://archive.fosdem.org/2011/interview/lennart-poettering.html">"Interview: Lennart Poettering - Lennart Poettering will give a talk about "Systemd: beyond init" at FOSDEM 2011"</a>. fosdem.org. 2011<span class="reference-accessdate">. Retrieved <span class="nowrap">2014-06-16</span></span>. <q><i>In fact, the way I see things the <b><a href="/wiki/Linux_kernel_API" class="mw-redirect" title="Linux kernel API">Linux API</a></b> has been taking the role of the <b>POSIX API</b> 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 <a href="/wiki/The_Linux_Programming_Interface" title="The Linux Programming Interface">The Linux Programming Interface</a>, ignore everything it says about <a href="/wiki/POSIX" title="POSIX">POSIX</a> compatibility and hack away your amazing Linux software. It's quite relieving!</i></q></cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Interview%3A+Lennart+Poettering+-+Lennart+Poettering+will+give+a+talk+about+%22Systemd%3A+beyond+init%22+at+FOSDEM+2011.&amp;rft.pub=fosdem.org&amp;rft.date=2011&amp;rft_id=https%3A%2F%2Farchive.fosdem.org%2F2011%2Finterview%2Flennart-poettering.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite id="CITEREFMichael_Kerrisk2016" class="citation web cs1"><a href="/wiki/Michael_Kerrisk" title="Michael Kerrisk">Michael Kerrisk</a> (2016-01-31). <a rel="nofollow" class="external text" href="https://archive.fosdem.org/2016/schedule/event/design_linux_kernel_api/">"How to design a Linux kernel API"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2016-02-04</span></span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=How+to+design+a+Linux+kernel+API&amp;rft.date=2016-01-31&amp;rft.au=Michael+Kerrisk&amp;rft_id=https%3A%2F%2Farchive.fosdem.org%2F2016%2Fschedule%2Fevent%2Fdesign_linux_kernel_api%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.linux-magazine.com/Issues/2014/165/Kernel-News">"System Call Organization"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=System+Call+Organization&amp;rft_id=http%3A%2F%2Fwww.linux-magazine.com%2FIssues%2F2014%2F165%2FKernel-News&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lkml.org/lkml/2014/2/27/571">"Making a universal list of syscalls?"</a>. <a href="/wiki/LKML" class="mw-redirect" title="LKML">LKML</a>. 2014-02-27.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Making+a+universal+list+of+syscalls%3F&amp;rft.pub=LKML&amp;rft.date=2014-02-27&amp;rft_id=https%3A%2F%2Flkml.org%2Flkml%2F2014%2F2%2F27%2F571&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lwn.net/Articles/585415/">"Flags as a system call API design pattern"</a>. <a href="/wiki/LWN.net" title="LWN.net">LWN.net</a>. 2014-02-12.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Flags+as+a+system+call+API+design+pattern&amp;rft.pub=LWN.net&amp;rft.date=2014-02-12&amp;rft_id=https%3A%2F%2Flwn.net%2FArticles%2F585415%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-11">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lwn.net/Articles/446528/">"On vsyscalls and the vDSO"</a>. <a href="/wiki/LWN.net" title="LWN.net">LWN.net</a>. 2011-06-08.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=On+vsyscalls+and+the+vDSO&amp;rft.pub=LWN.net&amp;rft.date=2011-06-08&amp;rft_id=https%3A%2F%2Flwn.net%2FArticles%2F446528%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-12">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://lkml.org/lkml/2014/7/17/145">"&#91;PATCH, RFC&#93; random: introduce getrandom(2) system call"</a>. <a href="/wiki/Linux_kernel_mailing_list" title="Linux kernel mailing list">LKML</a>. 2014-07-17.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=%5BPATCH%2C+&#82;FC%5D+random%3A+introduce+getrandom%282%29+system+call&amp;rft.pub=LKML&amp;rft.date=2014-07-17&amp;rft_id=https%3A%2F%2Flkml.org%2Flkml%2F2014%2F7%2F17%2F145&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-13">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://archive.today/20140422172420/https://github.com/gregkh/kdbus/blob/master/memfd.c">"memfd.c"</a>. <i><a href="/wiki/GitHub" title="GitHub">GitHub</a></i>. Archived from <a rel="nofollow" class="external text" href="https://github.com/gregkh/kdbus/blob/master/memfd.c">the original</a> on 2014-04-22.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=GitHub&amp;rft.atitle=memfd.c&amp;rft_id=https%3A%2F%2Fgithub.com%2Fgregkh%2Fkdbus%2Fblob%2Fmaster%2Fmemfd.c&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.phoronix.com/scan.php?page=news_item&amp;px=MTYzNTQ">"NetBSD 7.0 Will Finally Have DRM/KMS Drivers"</a>. <a href="/wiki/Phoronix" class="mw-redirect" title="Phoronix">Phoronix</a>. 2014-03-19.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=NetBSD+7.0+Will+Finally+Have+DRM%2FKMS+Drivers&amp;rft.pub=Phoronix&amp;rft.date=2014-03-19&amp;rft_id=https%3A%2F%2Fwww.phoronix.com%2Fscan.php%3Fpage%3Dnews_item%26px%3DMTYzNTQ&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/stable-api-nonsense.rst">"The Linux Kernel Driver Interface"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=The+Linux+Kernel+Driver+Interface&amp;rft_id=https%3A%2F%2Fgit.kernel.org%2Fpub%2Fscm%2Flinux%2Fkernel%2Fgit%2Ftorvalds%2Flinux.git%2Ftree%2FDocumentation%2Fprocess%2Fstable-api-nonsense.rst&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> <li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222"><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://abi-laboratory.pro/tracker/timeline/linux/">"Analysis of ABI changes in the Linux kernel"</a>. Andrey Ponomarenko's ABI laboratory. 2016-03-15.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Analysis+of+ABI+changes+in+the+Linux+kernel&amp;rft.pub=Andrey+Ponomarenko%27s+ABI+laboratory&amp;rft.date=2016-03-15&amp;rft_id=http%3A%2F%2Fabi-laboratory.pro%2Ftracker%2Ftimeline%2Flinux%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ALinux+kernel+interfaces" class="Z3988"></span></span> </li> </ol></div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Linux_kernel_interfaces&amp;action=edit&amp;section=12" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="https://www.kernel.org/doc/html/v5.0/core-api/kernel-api.html">The Linux Kernel API 5.0</a>, <a rel="nofollow" class="external text" href="https://www.kernel.org/doc/html/v5.0/core-api/mm-api.html">Memory Management APIs 5.0</a> (new <a href="/wiki/Sphinx_(documentation_generator)" title="Sphinx (documentation generator)">sphinx</a> format)</li> <li><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070227215533/http://www.gnugeneration.com/books/linux/2.6.20/kernel-api/">The API of Linux kernel 2.6.20</a> and <a rel="nofollow" class="external text" href="https://www.kernel.org/doc/htmldocs/kernel-api/">4.12</a> (in deprecated htmldocs format)</li> <li><a rel="nofollow" class="external text" href="https://abi-laboratory.pro/?view=timeline&amp;l=linux">API/ABI changes review for Linux</a></li> <li><a rel="nofollow" class="external text" href="http://man7.org/tlpi/">The Linux Programming Interface</a> book, <a rel="nofollow" class="external text" href="http://man7.org/tlpi/api_changes/">Linux and <i>glibc</i> API changes</a> since <a href="/wiki/The_Linux_Programming_Interface" title="The Linux Programming Interface">The Linux Programming Interface</a> was released in 2010</li> <li><a rel="nofollow" class="external text" href="https://www.makelinux.net/kernel_map/">Interactive Linux kernel map</a> with main API functions and structures, <a rel="nofollow" class="external text" href="https://www.makelinux.net/kernel_map/LKM.pdf">PDF</a> version</li> <li><a rel="nofollow" class="external text" href="http://www.makelinux.net/ldd3">Linux Device Drivers</a> by Jonathan Corbet, Greg Kroah-Hartman and Alessandro Rubini, 3rd edition</li> <li><a rel="nofollow" class="external text" href="http://isis.poly.edu/kulesh/stuff/src/klist/">Linux Kernel Linked List Explained</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20090925130610/http://isis.poly.edu/kulesh/stuff/src/klist/">Archived</a> 2009-09-25 at the <a href="/wiki/Wayback_Machine" title="Wayback Machine">Wayback Machine</a></li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="Linux_kernel" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Linux_kernel" title="Template:Linux kernel"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Linux_kernel" title="Template talk:Linux kernel"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Linux_kernel" title="Special:EditPage/Template:Linux kernel"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Linux_kernel" style="font-size:114%;margin:0 4em"><a href="/wiki/Linux_kernel" title="Linux kernel">Linux kernel</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Organization</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th id="Kernel" scope="row" class="navbox-group" style="width:1%">Kernel</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Linux_Foundation" title="Linux Foundation">Linux Foundation</a></li> <li><a href="/wiki/Linux_Mark_Institute" title="Linux Mark Institute">Linux Mark Institute</a></li> <li><a href="/wiki/Linus%27s_law" title="Linus&#39;s law">Linus's law</a></li> <li><a href="/wiki/Tanenbaum%E2%80%93Torvalds_debate" title="Tanenbaum–Torvalds debate">Tanenbaum–Torvalds debate</a></li> <li><a href="/wiki/Tux_(mascot)" title="Tux (mascot)">Tux</a></li> <li><a href="/wiki/SCO%E2%80%93Linux_disputes" title="SCO–Linux disputes">SCO disputes</a></li> <li><a href="/wiki/Linaro" title="Linaro">Linaro</a></li> <li><a href="/wiki/GNU_General_Public_License#Version_2" title="GNU General Public License">GNU GPL v2</a></li> <li><a href="/wiki/Menuconfig" title="Menuconfig">menuconfig</a></li> <li><a href="/wiki/List_of_Linux-supported_computer_architectures" title="List of Linux-supported computer architectures">Supported computer architectures</a></li> <li><a href="/wiki/Linux_kernel_version_history" title="Linux kernel version history">Version history</a></li> <li><a href="/wiki/Criticism_of_Linux" title="Criticism of Linux">Criticism</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Support</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li>Developers <ul><li><i><a href="/wiki/The_Linux_Programming_Interface" title="The Linux Programming Interface">The Linux Programming Interface</a></i></li> <li><a href="/wiki/Kernel.org" title="Kernel.org">kernel.org</a></li> <li><a href="/wiki/Linux_kernel_mailing_list" title="Linux kernel mailing list">LKML</a></li> <li><a href="/wiki/Linux_conference" class="mw-redirect" title="Linux conference">Linux conferences</a></li></ul></li> <li>Users <ul><li><a href="/wiki/Linux_user_group" title="Linux user group">Linux User Group (LUG)</a></li></ul></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Technical</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Debugging</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/CRIU" title="CRIU">CRIU</a></li> <li><a href="/wiki/Ftrace" title="Ftrace">ftrace</a></li> <li><a href="/wiki/Kdump_(Linux)" title="Kdump (Linux)">kdump</a></li> <li><a href="/wiki/Linux_kernel_oops" title="Linux kernel oops">Linux kernel oops</a></li> <li><a href="/wiki/SystemTap" title="SystemTap">SystemTap</a></li> <li><a href="/wiki/Berkeley_Packet_Filter" title="Berkeley Packet Filter">BPF</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Booting_process_of_Linux" title="Booting process of Linux">Startup</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Vmlinux" title="Vmlinux">vmlinux</a></li> <li><a href="/wiki/System.map" title="System.map">System.map</a></li> <li><a href="/wiki/Dracut_(software)" title="Dracut (software)">dracut</a></li> <li><a href="/wiki/Initrd" class="mw-redirect" title="Initrd">initrd</a></li> <li><a href="/wiki/Initramfs" class="mw-redirect" title="Initramfs">initramfs</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink selflink">ABIs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Linux_Standard_Base" title="Linux Standard Base">Linux Standard Base</a></li> <li><a href="/wiki/X32_ABI" title="X32 ABI">x32 ABI</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink selflink">APIs</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%">Kernel</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink-fragment" href="#SCI">System Call<br />Interface</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/POSIX" title="POSIX">POSIX</a> <ul><li><a href="/wiki/Ioctl" title="Ioctl">ioctl</a></li> <li><a href="/wiki/Select_(Unix)" title="Select (Unix)">select</a></li> <li><a href="/wiki/Open_(system_call)" title="Open (system call)">open</a></li> <li><a href="/wiki/Read_(system_call)" title="Read (system call)">read</a></li> <li><a href="/wiki/Close_(system_call)" title="Close (system call)">close</a></li> <li><a href="/wiki/Sync_(Unix)" title="Sync (Unix)">sync</a></li> <li>…</li></ul></li> <li><a class="mw-selflink-fragment" href="#Additions_to_POSIX">Linux-only</a> <ul><li><a href="/wiki/Futex" title="Futex">futex</a></li> <li><a href="/wiki/Epoll" title="Epoll">epoll</a></li> <li><a href="/wiki/Splice_(system_call)" title="Splice (system call)">splice</a></li> <li><a href="/wiki/Dnotify" title="Dnotify">dnotify</a></li> <li><a href="/wiki/Inotify" title="Inotify">inotify</a></li> <li><a href="/wiki/Readahead" title="Readahead">readahead</a></li> <li>…</li></ul></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a class="mw-selflink-fragment" href="#In–kernel_APIs">In-kernel</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Advanced_Linux_Sound_Architecture" title="Advanced Linux Sound Architecture">ALSA</a></li> <li><a href="/wiki/Crypto_API_(Linux)" title="Crypto API (Linux)">Crypto API</a></li> <li><a href="/wiki/Io_uring" title="Io uring">io uring</a></li> <li><a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">DRM</a></li> <li><a href="/wiki/Kernfs_(Linux)" title="Kernfs (Linux)">kernfs</a></li> <li><a href="/wiki/Memory_barrier" title="Memory barrier">Memory barrier</a></li> <li><a href="/wiki/New_API" title="New API">New API</a></li> <li><a href="/wiki/Read-copy-update" title="Read-copy-update">RCU</a></li> <li><a href="/wiki/Video4Linux" title="Video4Linux">Video4Linux</a></li> <li><a href="/wiki/IIO_Framework" title="IIO Framework">IIO</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/User_space_and_kernel_space" title="User space and kernel space">Userspace</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Daemon_(computing)" title="Daemon (computing)">Daemons</a>,<br /><a href="/wiki/Virtual_file_system" title="Virtual file system">File systems</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li>bpffs</li> <li><a href="/wiki/Configfs" title="Configfs">configfs</a></li> <li><a href="/wiki/Devfs" class="mw-redirect" title="Devfs">devfs</a></li> <li><a href="/wiki/Devpts" title="Devpts">devpts</a></li> <li><a href="/wiki/Debugfs" title="Debugfs">debugfs</a></li> <li><a href="/wiki/Filesystem_in_Userspace" title="Filesystem in Userspace">FUSE</a></li> <li>hugetlbfs</li> <li>pipefs</li> <li><a href="/wiki/Procfs" title="Procfs">procfs</a></li> <li>securityfs</li> <li>sockfs</li> <li><a href="/wiki/Sysfs" title="Sysfs">sysfs</a></li> <li><a href="/wiki/Tmpfs" title="Tmpfs">tmpfs</a></li> <li><a href="/wiki/Systemd" title="Systemd">systemd</a> <ul><li><a href="/wiki/Udev" title="Udev">udev</a></li></ul></li> <li><a href="/wiki/Kmscon" title="Kmscon">Kmscon</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Wrapper_library" title="Wrapper library">Wrapper<br />libraries</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/C_standard_library" title="C standard library">C standard library</a> <ul><li><a href="/wiki/Glibc" title="Glibc">glibc</a></li> <li><a href="/wiki/UClibc" title="UClibc">uClibc</a></li> <li><a href="/wiki/Bionic_(software)" title="Bionic (software)">Bionic</a> <ul><li><a href="/wiki/Libhybris" title="Libhybris">libhybris</a></li></ul></li> <li><a href="/wiki/Dietlibc" title="Dietlibc">dietlibc</a></li> <li><a href="/wiki/Embedded_GLIBC" class="mw-redirect" title="Embedded GLIBC">EGLIBC</a></li> <li><a href="/wiki/Klibc" title="Klibc">klibc</a></li> <li><a href="/wiki/Musl" title="Musl">musl</a></li> <li><a href="/wiki/Newlib" title="Newlib">Newlib</a></li></ul></li> <li><a href="/wiki/Cgroups" title="Cgroups">libcgroup</a></li> <li><a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">libdrm</a></li> <li><a href="/wiki/Advanced_Linux_Sound_Architecture" title="Advanced Linux Sound Architecture">libalsa</a></li> <li><a href="/wiki/Evdev" title="Evdev">libevdev</a></li> <li><a href="/wiki/Libusb" title="Libusb">libusb</a></li> <li><a href="/wiki/Io_uring" title="Io uring">liburing</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Loadable_kernel_module" title="Loadable kernel module">Kernel modules</a></li> <li><a href="/wiki/BlueZ" class="mw-redirect" title="BlueZ">BlueZ</a></li> <li><a href="/wiki/Cgroups" title="Cgroups">cgroups</a></li> <li><a href="/wiki/Linux_console" title="Linux console">Console</a></li> <li><a href="/wiki/Bcache" title="Bcache">bcache</a></li> <li><a href="/wiki/Device_mapper" title="Device mapper">Device mapper</a></li> <li><a href="/wiki/Dm-cache" title="Dm-cache">dm-cache</a></li> <li><a href="/wiki/Dm-crypt" title="Dm-crypt">dm-crypt</a></li> <li><a href="/wiki/Direct_Rendering_Manager" title="Direct Rendering Manager">DRM</a></li> <li><a href="/wiki/EDAC_(Linux)" class="mw-redirect" title="EDAC (Linux)">EDAC</a></li> <li><a href="/wiki/Evdev" title="Evdev">evdev</a></li> <li><a href="/wiki/Kernel_same-page_merging" title="Kernel same-page merging">Kernel same-page merging</a> (KSM)</li> <li><a href="/wiki/LIO_(SCSI_target)" title="LIO (SCSI target)">LIO</a></li> <li><a href="/wiki/Linux_framebuffer" title="Linux framebuffer">Framebuffer</a></li> <li><a href="/wiki/Logical_Volume_Manager_(Linux)" title="Logical Volume Manager (Linux)">LVM</a></li> <li><a href="/wiki/KMS_driver" class="mw-redirect" title="KMS driver">KMS driver</a></li> <li><a href="/wiki/Netfilter" title="Netfilter">Netfilter</a></li> <li><a href="/wiki/Netlink" title="Netlink">Netlink</a></li> <li><a href="/wiki/Nftables" title="Nftables">nftables</a></li> <li><a href="/wiki/Network_scheduler" title="Network scheduler">Network scheduler</a></li> <li><a href="/wiki/Perf_(Linux)" title="Perf (Linux)">perf</a></li> <li><a href="/wiki/SLUB_(software)" title="SLUB (software)">SLUB</a></li> <li><a href="/wiki/Zram" title="Zram">zram</a></li> <li><a href="/wiki/Zswap" title="Zswap">zswap</a></li></ul> <ul><li><a href="/wiki/Scheduling_(computing)#Linux" title="Scheduling (computing)">Process and I/O schedulers</a>:</li> <li><a href="/wiki/Brain_Fuck_Scheduler" title="Brain Fuck Scheduler">Brain Fuck Scheduler</a></li> <li><a href="/wiki/Completely_Fair_Scheduler" title="Completely Fair Scheduler">Completely Fair Scheduler</a> (CFS)</li> <li><a href="/wiki/Earliest_eligible_virtual_deadline_first_scheduling" title="Earliest eligible virtual deadline first scheduling">Earliest eligible virtual deadline first</a> (EEVDF)</li> <li><a href="/wiki/Noop_scheduler" title="Noop scheduler">Noop scheduler</a></li> <li><a href="/wiki/O(n)_scheduler" title="O(n) scheduler">O(n) scheduler</a></li> <li><a href="/wiki/O(1)_scheduler" title="O(1) scheduler">O(1) scheduler</a></li> <li><a href="/wiki/SCHED_DEADLINE" title="SCHED DEADLINE">SCHED_DEADLINE</a></li> <li><a href="/wiki/SCHED_FIFO" class="mw-redirect" title="SCHED FIFO">SCHED_FIFO</a></li> <li><a href="/wiki/SCHED_RR" class="mw-redirect" title="SCHED RR">SCHED_RR</a></li></ul> <ul><li><a href="/wiki/Linux_Security_Modules" title="Linux Security Modules">Security Modules</a>: <a href="/wiki/AppArmor" title="AppArmor">AppArmor</a></li> <li><a href="/wiki/Exec_Shield" title="Exec Shield">Exec Shield</a></li> <li><a href="/wiki/Seccomp" title="Seccomp">seccomp</a></li> <li><a href="/wiki/Security-Enhanced_Linux" title="Security-Enhanced Linux">SELinux</a></li> <li><a href="/wiki/Smack_(software)" title="Smack (software)">Smack</a></li> <li><a href="/wiki/Tomoyo_Linux" title="Tomoyo Linux">Tomoyo Linux</a></li> <li><a href="/wiki/Linux_PAM" title="Linux PAM">Linux PAM</a></li></ul> <ul><li><a href="/wiki/Device_driver" title="Device driver">Device drivers</a> <ul><li><a href="/wiki/Comparison_of_open-source_wireless_drivers" title="Comparison of open-source wireless drivers">802.11</a></li> <li><a href="/wiki/Free_and_open-source_graphics_device_driver" title="Free and open-source graphics device driver">graphics</a></li></ul></li> <li><a href="/wiki/Raw_device" title="Raw device">Raw device</a></li></ul> <ul><li><a href="/wiki/Initramfs" class="mw-redirect" title="Initramfs">initramfs</a></li> <li><a href="/wiki/KernelCare" title="KernelCare">KernelCare</a></li> <li><a href="/wiki/Kexec" title="Kexec">kexec</a></li> <li><a href="/wiki/KGraft" title="KGraft">kGraft</a></li> <li><a href="/wiki/Kpatch" title="Kpatch">kpatch</a></li> <li><a href="/wiki/Ksplice" title="Ksplice">Ksplice</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Variants</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Mainline_Linux" class="mw-redirect" title="Mainline Linux">Mainline</a> <ul><li><a href="/wiki/Linux_kernel" title="Linux kernel">Linux kernel</a></li> <li><a href="/wiki/Linux-libre" title="Linux-libre">Linux-libre</a></li></ul></li> <li><a href="/wiki/High-performance_computing" title="High-performance computing">High-performance computing</a> <ul><li><a href="/wiki/INK_(operating_system)" title="INK (operating system)">INK</a></li> <li><a href="/wiki/Compute_Node_Linux" title="Compute Node Linux">Compute Node Linux</a></li> <li><a href="/wiki/Slurm_Workload_Manager" title="Slurm Workload Manager">SLURM</a></li></ul></li> <li><a href="/wiki/Real-time_computing" title="Real-time computing">Real-time computing</a> <ul><li><a href="/wiki/RTLinux" title="RTLinux">RTLinux</a></li> <li><a href="/wiki/RTAI" title="RTAI">RTAI</a></li> <li><a href="/wiki/Xenomai" title="Xenomai">Xenomai</a></li> <li><a href="/wiki/PREEMPT_RT" title="PREEMPT RT">PREEMPT_RT</a></li></ul></li> <li><a href="/wiki/Memory_management_unit" title="Memory management unit">MMU</a>-less <ul><li><a href="/wiki/%CE%9CClinux" title="ΜClinux">μClinux</a></li> <li><a href="/wiki/PSXLinux" title="PSXLinux">PSXLinux</a></li></ul></li></ul> </div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th id="Virtualization" scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Virtualization" title="Virtualization">Virtualization</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Hypervisor" title="Hypervisor">Hypervisor</a> <ul><li><a href="/wiki/Kernel-based_Virtual_Machine" title="Kernel-based Virtual Machine">KVM</a></li> <li><a href="/wiki/Xen" title="Xen">Xen</a></li></ul></li> <li><a href="/wiki/OS-level_virtualization" title="OS-level virtualization">OS-level virtualization</a> <ul><li><a href="/wiki/Linux-VServer" title="Linux-VServer">Linux-VServer</a></li> <li><a href="/wiki/Lguest" title="Lguest">Lguest</a></li> <li><a href="/wiki/LXC" title="LXC">LXC</a></li> <li><a href="/wiki/OpenVZ" title="OpenVZ">OpenVZ</a></li></ul></li> <li>Other <ul><li><a href="/wiki/L4Linux" title="L4Linux">L4Linux</a></li> <li><a href="/wiki/ELinOS" title="ELinOS">ELinOS</a></li> <li><a href="/wiki/User-mode_Linux" title="User-mode Linux">User-mode Linux</a></li> <li><a href="/wiki/MkLinux" title="MkLinux">MkLinux</a></li> <li><a href="/wiki/Cooperative_Linux" title="Cooperative Linux">coLinux</a></li></ul></li></ul> </div></td></tr></tbody></table><div> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Linux_adoption" title="Linux adoption">Adoption</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th id="Rangeof_use" scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Linux_range_of_use" title="Linux range of use">Range<br />of use</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Linux_desktop_environments" class="mw-redirect" title="Linux desktop environments">Desktop</a></li> <li><a href="/wiki/Linux_on_embedded_systems" title="Linux on embedded systems">Embedded</a></li> <li><a href="/wiki/Video_games_and_Linux" title="Video games and Linux">Gaming</a></li> <li>Thin client: <ul><li><a href="/wiki/Linux_Terminal_Server_Project" title="Linux Terminal Server Project">LTSP</a></li></ul></li> <li>Server: <ul><li><a href="/wiki/LAMP_(software_bundle)" title="LAMP (software bundle)">LAMP</a></li> <li><a href="/wiki/LYME_(software_bundle)" title="LYME (software bundle)">LYME-LYCE</a></li></ul></li> <li><a href="/wiki/Linux-powered_device" title="Linux-powered device">Devices</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Adopters</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/List_of_Linux_adopters" title="List of Linux adopters">List of Linux adopters</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div> <ul><li><b><span class="nowrap"><span class="noviewer" typeof="mw:File"><a href="/wiki/File:NewTux.svg" class="mw-file-description"><img alt="icon" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/13px-NewTux.svg.png" decoding="async" width="13" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/20px-NewTux.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/b/b0/NewTux.svg/27px-NewTux.svg.png 2x" data-file-width="625" data-file-height="750" /></a></span> </span><a href="/wiki/Portal:Linux" title="Portal:Linux">Linux&#32;portal</a></b></li> <li><b><span class="nowrap"><span class="noviewer" typeof="mw:File"><span><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/16px-Free_and_open-source_software_logo_%282009%29.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/24px-Free_and_open-source_software_logo_%282009%29.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/3/31/Free_and_open-source_software_logo_%282009%29.svg/32px-Free_and_open-source_software_logo_%282009%29.svg.png 2x" data-file-width="512" data-file-height="512" /></span></span> </span><a href="/wiki/Portal:Free_and_open-source_software" title="Portal:Free and open-source software">Free and open-source software&#32;portal</a></b></li> <li><span class="noviewer" typeof="mw:File"><span title="Category"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <b><a href="/wiki/Category:Linux_kernel" title="Category:Linux kernel">Category</a></b></li></ul> </div></td></tr></tbody></table></div> <div class="navbox-styles"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1236075235"></div><div role="navigation" class="navbox" aria-labelledby="Operating_systems" style="padding:3px"><table class="nowraplinks mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1239400231"><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Operating_systems" title="Template:Operating systems"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Operating_systems" title="Template talk:Operating systems"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Operating_systems" title="Special:EditPage/Template:Operating systems"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Operating_systems" style="font-size:114%;margin:0 4em"><a href="/wiki/Operating_system" title="Operating system">Operating systems</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">General</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Comparison_of_operating_systems" title="Comparison of operating systems">Comparison</a></li> <li><a href="/wiki/Forensic_software_engineering" title="Forensic software engineering">Forensic engineering</a></li> <li><a href="/wiki/History_of_operating_systems" title="History of operating systems">History</a></li> <li><a href="/wiki/List_of_operating_systems" title="List of operating systems">List</a></li> <li><a href="/wiki/Timeline_of_operating_systems" title="Timeline of operating systems">Timeline</a></li> <li><a href="/wiki/Usage_share_of_operating_systems" title="Usage share of operating systems">Usage share</a></li> <li><a href="/wiki/Comparison_of_user_features_of_operating_systems" title="Comparison of user features of operating systems">User features comparison</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Variants</th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Disk_operating_system" title="Disk operating system">Disk operating system</a></li> <li><a href="/wiki/Distributed_operating_system" title="Distributed operating system">Distributed operating system</a></li> <li><a href="/wiki/Embedded_operating_system" title="Embedded operating system">Embedded operating system</a></li> <li><a href="/wiki/Hobbyist_operating_system" title="Hobbyist operating system">Hobbyist operating system</a></li> <li><a href="/wiki/Just_enough_operating_system" title="Just enough operating system">Just enough operating system</a></li> <li><a href="/wiki/Mobile_operating_system" title="Mobile operating system">Mobile operating system</a></li> <li><a href="/wiki/Network_operating_system" title="Network operating system">Network operating system</a></li> <li><a href="/wiki/Object-oriented_operating_system" title="Object-oriented operating system">Object-oriented operating system</a></li> <li><a href="/wiki/Real-time_operating_system" title="Real-time operating system">Real-time operating system</a></li> <li><a href="/wiki/Supercomputer_operating_system" title="Supercomputer operating system">Supercomputer operating system</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Kernel_(operating_system)" title="Kernel (operating system)">Kernel</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em"><a href="/wiki/Computer_architecture" title="Computer architecture">Architectures</a></th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Exokernel" title="Exokernel">Exokernel</a></li> <li><a href="/wiki/Hybrid_kernel" title="Hybrid kernel">Hybrid</a></li> <li><a href="/wiki/Microkernel" title="Microkernel">Microkernel</a></li> <li><a href="/wiki/Monolithic_kernel" title="Monolithic kernel">Monolithic</a></li> <li><a href="/wiki/Multikernel" title="Multikernel">Multikernel</a></li> <li><a href="/wiki/Vkernel" title="Vkernel">vkernel</a></li> <li><a href="/wiki/Rump_kernel" title="Rump kernel">Rump kernel</a></li> <li><a href="/wiki/Unikernel" title="Unikernel">Unikernel</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Device_driver" title="Device driver">Device driver</a></li> <li><a href="/wiki/Loadable_kernel_module" title="Loadable kernel module">Loadable kernel module</a></li> <li><a href="/wiki/User_space_and_kernel_space" title="User space and kernel space">User space and kernel space</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Process_management_(computing)" title="Process management (computing)">Process management</a></th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"></div><table class="nowraplinks navbox-subgroup" style="border-spacing:0"><tbody><tr><th scope="row" class="navbox-group" style="width:6em">Concepts</th><td class="navbox-list-with-group navbox-list navbox-odd" style="padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Computer_multitasking" title="Computer multitasking">Computer multitasking</a> (<a href="/wiki/Cooperative_multitasking" title="Cooperative multitasking">Cooperative</a>, <a href="/wiki/Preemption_(computing)" title="Preemption (computing)">Preemptive</a>)</li> <li><a href="/wiki/Context_switch" title="Context switch">Context switch</a></li> <li><a href="/wiki/Interrupt" title="Interrupt">Interrupt</a></li> <li><a href="/wiki/Inter-process_communication" title="Inter-process communication">IPC</a></li> <li><a href="/wiki/Process_(computing)" title="Process (computing)">Process</a></li> <li><a href="/wiki/Process_control_block" title="Process control block">Process control block</a></li> <li><a href="/wiki/Real-time_operating_system" title="Real-time operating system">Real-time</a></li> <li><a href="/wiki/Thread_(computing)" title="Thread (computing)">Thread</a></li> <li><a href="/wiki/Time-sharing" title="Time-sharing">Time-sharing</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:6em"><a href="/wiki/Scheduling_(computing)" title="Scheduling (computing)">Scheduling<br />algorithms</a></th><td class="navbox-list-with-group navbox-list navbox-even" style="padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Fixed-priority_pre-emptive_scheduling" title="Fixed-priority pre-emptive scheduling">Fixed-priority preemptive</a></li> <li><a href="/wiki/Multilevel_feedback_queue" title="Multilevel feedback queue">Multilevel feedback queue</a></li> <li><a href="/wiki/Round-robin_scheduling" title="Round-robin scheduling">Round-robin</a></li> <li><a href="/wiki/Shortest_job_next" title="Shortest job next">Shortest job next</a></li></ul> </div></td></tr></tbody></table><div></div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Memory_management_(operating_systems)" title="Memory management (operating systems)">Memory management</a>,<br /><a href="/wiki/System_resource" title="System resource">resource</a> protection</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Bus_error" title="Bus error">Bus error</a></li> <li><a href="/wiki/General_protection_fault" title="General protection fault">General protection fault</a></li> <li><a href="/wiki/Memory_paging" title="Memory paging">Memory paging</a></li> <li><a href="/wiki/Memory_protection" title="Memory protection">Memory protection</a></li> <li><a href="/wiki/Protection_ring" title="Protection ring">Protection ring</a></li> <li><a href="/wiki/Segmentation_fault" title="Segmentation fault">Segmentation fault</a></li> <li><a href="/wiki/Virtual_memory" title="Virtual memory">Virtual memory</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%"><a href="/wiki/Non-volatile_memory" title="Non-volatile memory">Storage</a> access,<br /><a href="/wiki/File_system" title="File system">file systems</a></th><td class="navbox-list-with-group navbox-list navbox-even hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Booting#BOOT-LOADER" title="Booting">Boot loader</a></li> <li><a href="/wiki/Defragmentation" title="Defragmentation">Defragmentation</a></li> <li><a href="/wiki/Device_file" title="Device file">Device file</a></li> <li><a href="/wiki/File_attribute" title="File attribute">File attribute</a></li> <li><a href="/wiki/Inode" title="Inode">Inode</a></li> <li><a href="/wiki/Journaling_file_system" title="Journaling file system">Journal</a></li> <li><a href="/wiki/Disk_partitioning" title="Disk partitioning">Partition</a></li> <li><a href="/wiki/Virtual_file_system" title="Virtual file system">Virtual file system</a></li> <li><a href="/wiki/Virtual_tape_library" title="Virtual tape library">Virtual tape library</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Supporting concepts</th><td class="navbox-list-with-group navbox-list navbox-odd hlist" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/API" title="API">API</a></li> <li><a href="/wiki/Computer_network" title="Computer network">Computer network</a></li> <li><a href="/wiki/Hardware_abstraction" title="Hardware abstraction">HAL</a></li> <li><a href="/wiki/Live_CD" title="Live CD">Live CD</a></li> <li><a href="/wiki/Live_USB" title="Live USB">Live USB</a></li> <li><a href="/wiki/Shell_(computing)" title="Shell (computing)">Shell</a> <ul><li><a href="/wiki/Command-line_interface" title="Command-line interface">CLI</a></li> <li><a href="/wiki/User_interface" title="User interface">User interface</a></li></ul></li> <li><a href="/wiki/Preboot_Execution_Environment" title="Preboot Execution Environment">PXE</a></li></ul> </div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐web.codfw.main‐f69cdc8f6‐hppzn Cached time: 20241122155428 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.505 seconds Real time usage: 0.697 seconds Preprocessor visited node count: 2121/1000000 Post‐expand include size: 126509/2097152 bytes Template argument size: 3283/2097152 bytes Highest expansion depth: 14/100 Expensive parser function count: 12/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 74022/5000000 bytes Lua time usage: 0.297/10.000 seconds Lua memory usage: 6855475/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 562.311 1 -total 29.23% 164.361 1 Template:Reflist 25.58% 143.840 16 Template:Cite_web 24.46% 137.530 11 Template:Navbox 19.78% 111.198 1 Template:Linux_kernel 12.20% 68.585 1 Template:Short_description 8.14% 45.748 5 Template:Category_handler 7.76% 43.658 1 Template:Essay-like 7.63% 42.896 2 Template:Citation_needed 6.81% 38.273 2 Template:Fix --> <!-- Saved in parser cache with key enwiki:pcache:idhash:2212634-0!canonical and timestamp 20241122155428 and revision id 1250593013. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Linux_kernel_interfaces&amp;oldid=1250593013">https://en.wikipedia.org/w/index.php?title=Linux_kernel_interfaces&amp;oldid=1250593013</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Category</a>: <ul><li><a href="/wiki/Category:Interfaces_of_the_Linux_kernel" title="Category:Interfaces of the Linux kernel">Interfaces of the Linux kernel</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:Wikipedia_articles_with_style_issues_from_July_2014" title="Category:Wikipedia articles with style issues from July 2014">Wikipedia articles with style issues from July 2014</a></li><li><a href="/wiki/Category:All_articles_with_style_issues" title="Category:All articles with style issues">All articles with style issues</a></li><li><a href="/wiki/Category:All_articles_with_unsourced_statements" title="Category:All articles with unsourced statements">All articles with unsourced statements</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_November_2014" title="Category:Articles with unsourced statements from November 2014">Articles with unsourced statements from November 2014</a></li><li><a href="/wiki/Category:Articles_with_unsourced_statements_from_July_2014" title="Category:Articles with unsourced statements from July 2014">Articles with unsourced statements from July 2014</a></li><li><a href="/wiki/Category:Articles_needing_expert_attention_from_February_2018" title="Category:Articles needing expert attention from February 2018">Articles needing expert attention from February 2018</a></li><li><a href="/wiki/Category:All_articles_needing_expert_attention" title="Category:All articles needing expert attention">All articles needing expert attention</a></li><li><a href="/wiki/Category:Free_and_open-source_software_articles_needing_expert_attention" title="Category:Free and open-source software articles needing expert attention">Free and open-source software articles needing expert attention</a></li><li><a href="/wiki/Category:Software_articles_needing_expert_attention" title="Category:Software articles needing expert attention">Software articles needing expert attention</a></li><li><a href="/wiki/Category:Computing_articles_needing_expert_attention" title="Category:Computing articles needing expert attention">Computing articles needing expert attention</a></li><li><a href="/wiki/Category:Webarchive_template_wayback_links" title="Category:Webarchive template wayback links">Webarchive template wayback links</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 11 October 2024, at 09:46<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Linux_kernel_interfaces&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-f69cdc8f6-lt4nx","wgBackendResponseTime":134,"wgPageParseReport":{"limitreport":{"cputime":"0.505","walltime":"0.697","ppvisitednodes":{"value":2121,"limit":1000000},"postexpandincludesize":{"value":126509,"limit":2097152},"templateargumentsize":{"value":3283,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":12,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":74022,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 562.311 1 -total"," 29.23% 164.361 1 Template:Reflist"," 25.58% 143.840 16 Template:Cite_web"," 24.46% 137.530 11 Template:Navbox"," 19.78% 111.198 1 Template:Linux_kernel"," 12.20% 68.585 1 Template:Short_description"," 8.14% 45.748 5 Template:Category_handler"," 7.76% 43.658 1 Template:Essay-like"," 7.63% 42.896 2 Template:Citation_needed"," 6.81% 38.273 2 Template:Fix"]},"scribunto":{"limitreport-timeusage":{"value":"0.297","limit":"10.000"},"limitreport-memusage":{"value":6855475,"limit":52428800},"limitreport-logs":"table#1 {\n [\"size\"] = \"tiny\",\n}\ntable#1 {\n [\"size\"] = \"tiny\",\n}\n"},"cachereport":{"origin":"mw-web.codfw.main-f69cdc8f6-hppzn","timestamp":"20241122155428","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Linux kernel interfaces","url":"https:\/\/en.wikipedia.org\/wiki\/Linux_kernel_interfaces","sameAs":"http:\/\/www.wikidata.org\/entity\/Q6555064","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q6555064","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2005-07-11T14:05:37Z","dateModified":"2024-10-11T09:46:37Z","image":"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/6\/68\/Linux_kernel_interfaces.svg","headline":"overview and comparison of the Linux kernel API's and ABI's"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10