CINXE.COM
ioctl - Wikipedia
<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-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-sticky-header-enabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>ioctl - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-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-sticky-header-enabled 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":"4e14ce5e-e831-4f9c-90fe-95e48e0cc845","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Ioctl","wgTitle":"Ioctl","wgCurRevisionId":1265261534,"wgRevisionId":1265261534,"wgArticleId":2924038,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["CS1 maint: numeric names: authors list","Articles with short description","Short description is different from Wikidata","Articles lacking in-text citations from February 2010","All articles lacking in-text citations","Articles needing additional references from December 2024","All articles needing additional references","Unix","System calls"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Ioctl","wgRelevantArticleId":2924038,"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,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q837975","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","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","site","mediawiki.page.ready","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"];</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&modules=ext.cite.styles%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&only=styles&skin=vector-2022"> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.20"> <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 name="viewport" content="width=1120"> <meta property="og:title" content="ioctl - 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/Ioctl"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Ioctl&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/Ioctl"> <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&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-Ioctl rootpage-Ioctl 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" title="Main menu" > <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><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages"><span>Special pages</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'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/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&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&returnto=Ioctl" 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&returnto=Ioctl" title="You're encouraged to log in; however, it'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/?wmf_source=donate&wmf_medium=sidebar&wmf_campaign=en.wikipedia.org&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&returnto=Ioctl" 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&returnto=Ioctl" title="You're encouraged to log in; however, it'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-Background" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Background"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Background</span> </div> </a> <ul id="toc-Background-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Uses" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Uses"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Uses</span> </div> </a> <button aria-controls="toc-Uses-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 Uses subsection</span> </button> <ul id="toc-Uses-sublist" class="vector-toc-list"> <li id="toc-Hardware_device_configuration" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Hardware_device_configuration"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Hardware device configuration</span> </div> </a> <ul id="toc-Hardware_device_configuration-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Terminals" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Terminals"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Terminals</span> </div> </a> <ul id="toc-Terminals-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Kernel_extensions" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Kernel_extensions"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Kernel extensions</span> </div> </a> <ul id="toc-Kernel_extensions-sublist" class="vector-toc-list"> <li id="toc-sysctl_alternative" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#sysctl_alternative"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3.1</span> <span>sysctl alternative</span> </div> </a> <ul id="toc-sysctl_alternative-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> </ul> </li> <li id="toc-Implementations" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Implementations"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Implementations</span> </div> </a> <button aria-controls="toc-Implementations-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 Implementations subsection</span> </button> <ul id="toc-Implementations-sublist" class="vector-toc-list"> <li id="toc-Unix" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Unix"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.1</span> <span>Unix</span> </div> </a> <ul id="toc-Unix-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Win32" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Win32"> <div class="vector-toc-text"> <span class="vector-toc-numb">3.2</span> <span>Win32</span> </div> </a> <ul id="toc-Win32-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Alternatives" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Alternatives"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Alternatives</span> </div> </a> <button aria-controls="toc-Alternatives-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 Alternatives subsection</span> </button> <ul id="toc-Alternatives-sublist" class="vector-toc-list"> <li id="toc-Other_vectored_call_interfaces" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Other_vectored_call_interfaces"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.1</span> <span>Other vectored call interfaces</span> </div> </a> <ul id="toc-Other_vectored_call_interfaces-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Memory_mapping" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Memory_mapping"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.2</span> <span>Memory mapping</span> </div> </a> <ul id="toc-Memory_mapping-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Netlink" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Netlink"> <div class="vector-toc-text"> <span class="vector-toc-numb">4.3</span> <span>Netlink</span> </div> </a> <ul id="toc-Netlink-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Implications" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Implications"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Implications</span> </div> </a> <button aria-controls="toc-Implications-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 Implications subsection</span> </button> <ul id="toc-Implications-sublist" class="vector-toc-list"> <li id="toc-Complexity" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Complexity"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.1</span> <span>Complexity</span> </div> </a> <ul id="toc-Complexity-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Security" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Security"> <div class="vector-toc-text"> <span class="vector-toc-numb">5.2</span> <span>Security</span> </div> </a> <ul id="toc-Security-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Further_reading" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Further_reading"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Further reading</span> </div> </a> <ul id="toc-Further_reading-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> </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" title="Table of Contents" > <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">ioctl</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 7 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-7" 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">7 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Ioctl" title="Ioctl – Spanish" lang="es" hreflang="es" data-title="Ioctl" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Ioctl" title="Ioctl – French" lang="fr" hreflang="fr" data-title="Ioctl" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/Ioctl" title="Ioctl – Korean" lang="ko" hreflang="ko" data-title="Ioctl" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-he mw-list-item"><a href="https://he.wikipedia.org/wiki/Ioctl" title="Ioctl – Hebrew" lang="he" hreflang="he" data-title="Ioctl" data-language-autonym="עברית" data-language-local-name="Hebrew" class="interlanguage-link-target"><span>עברית</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/Ioctl" title="Ioctl – Japanese" lang="ja" hreflang="ja" data-title="Ioctl" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Ioctl" title="Ioctl – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Ioctl" 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-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/Ioctl" title="Ioctl – Chinese" lang="zh" hreflang="zh" data-title="Ioctl" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</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/Q837975#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/Ioctl" 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:Ioctl" 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/Ioctl"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Ioctl&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=Ioctl&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/Ioctl"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Ioctl&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=Ioctl&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/Ioctl" 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/Ioctl" 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="//en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Ioctl&oldid=1265261534" 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=Ioctl&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&page=Ioctl&id=1265261534&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&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIoctl"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FIoctl"><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&page=Ioctl&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=Ioctl&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/Q837975" 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">System call for device-specific input/output operations</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-More_footnotes_needed plainlinks metadata ambox ambox-style ambox-More_footnotes_needed" 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/commons/thumb/a/a4/Text_document_with_red_question_mark.svg/40px-Text_document_with_red_question_mark.svg.png" decoding="async" width="40" height="40" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Text_document_with_red_question_mark.svg/60px-Text_document_with_red_question_mark.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Text_document_with_red_question_mark.svg/80px-Text_document_with_red_question_mark.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 includes a list of <a href="/wiki/Wikipedia:Citing_sources#General_references" title="Wikipedia:Citing sources">general references</a>, but <b>it lacks sufficient corresponding <a href="/wiki/Wikipedia:Citing_sources#Inline_citations" title="Wikipedia:Citing sources">inline citations</a></b>.<span class="hide-when-compact"> Please help to <a href="/wiki/Wikipedia:WikiProject_Reliability" title="Wikipedia:WikiProject Reliability">improve</a> this article by <a href="/wiki/Wikipedia:When_to_cite" title="Wikipedia:When to cite">introducing</a> more precise citations.</span> <span class="date-container"><i>(<span class="date">February 2010</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> <p>In <a href="/wiki/Computing" title="Computing">computing</a>, <code><b>ioctl</b></code> (an abbreviation of <b>input/output control</b>) is a <a href="/wiki/System_call" title="System call">system call</a> for device-specific <a href="/wiki/Input/output" title="Input/output">input/output</a> operations and other operations which cannot be expressed by regular file semantics. It takes a parameter specifying a request code; the effect of a call depends completely on the request code. Request codes are often device-specific. For instance, a CD-ROM <a href="/wiki/Device_driver" title="Device driver">device driver</a> which can instruct a physical device to eject a disc would provide an <code>ioctl</code> request code to do so. Device-independent request codes are sometimes used to give <a href="/wiki/User_space_and_kernel_space" title="User space and kernel space">userspace</a> access to kernel functions which are only used by core system software or still under development. </p><p>The <code>ioctl</code> system call first appeared in <a href="/wiki/Version_7_Unix" title="Version 7 Unix">Version 7</a> of <a href="/wiki/Unix" title="Unix">Unix</a> under that name. It is supported by most Unix and <a href="/wiki/Unix-like" title="Unix-like">Unix-like</a> systems, including <a href="/wiki/Linux" title="Linux">Linux</a> and <a href="/wiki/MacOS" title="MacOS">macOS</a>, though the available request codes differ from system to system. <a href="/wiki/Microsoft_Windows" title="Microsoft Windows">Microsoft Windows</a> provides a similar function, named "<code>DeviceIoControl</code>", in its <a href="/wiki/Windows_API" title="Windows API">Win32 API</a>. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Background">Background</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=1" title="Edit section: Background"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Conventional operating systems can be divided into two layers, <a href="/wiki/User_space_and_kernel_space" title="User space and kernel space">userspace</a> and the <a href="/wiki/Kernel_(operating_system)" title="Kernel (operating system)">kernel</a>. Application code such as a <a href="/wiki/Text_editor" title="Text editor">text editor</a> resides in userspace, while the underlying facilities of the operating system, such as the <a href="/wiki/Network_stack" class="mw-redirect" title="Network stack">network stack</a>, reside in the kernel. Kernel code handles sensitive resources and implements the security and reliability barriers between applications; for this reason, user mode applications are prevented by the operating system from directly accessing kernel resources. </p><p>Userspace applications typically make requests to the kernel by means of <a href="/wiki/System_call" title="System call">system calls</a>, whose code lies in the kernel layer. A system call usually takes the form of a "system call vector", in which the desired system call is indicated with an index number. For instance, <code>exit()</code> might be system call number 1, and <code>write()</code> number 4. The system call vector is then used to find the desired kernel function for the request. In this way, conventional operating systems typically provide several hundred system calls to the userspace. </p><p>Though an expedient design for accessing standard kernel facilities, system calls are sometimes inappropriate for accessing non-standard hardware peripherals. By necessity, most hardware peripherals (aka devices) are directly addressable only within the kernel. But user code may need to communicate directly with devices; for instance, an administrator might configure the media type on an <a href="/wiki/Ethernet" title="Ethernet">Ethernet</a> interface. Modern operating systems support diverse devices, many of which offer a large collection of facilities. Some of these facilities may not be foreseen by the kernel designer, and as a consequence it is difficult for a kernel to provide system calls for using the devices. </p><p>To solve this problem, the kernel is designed to be extensible, and may accept an extra module called a <a href="/wiki/Device_driver" title="Device driver">device driver</a> which runs in kernel space and can directly address the device. An <code>ioctl</code> interface is a single system call by which userspace may communicate with device drivers. Requests on a device driver are vectored with respect to this <code>ioctl</code> system call, typically by a handle to the device and a request number. The basic kernel can thus allow the userspace to access a device driver without knowing anything about the facilities supported by the device, and without needing an unmanageably large collection of system calls. </p> <div class="mw-heading mw-heading2"><h2 id="Uses">Uses</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=2" title="Edit section: Uses"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Hardware_device_configuration">Hardware device configuration</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=3" title="Edit section: Hardware device configuration"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A common use of <code>ioctl</code> is to control hardware devices. </p><p>For example, on <a href="/wiki/Win32" class="mw-redirect" title="Win32">Win32</a> systems, <code>ioctl</code> calls can communicate with <a href="/wiki/USB" title="USB">USB</a> devices, or they can discover drive-geometry information of the attached storage-devices. </p><p>On <a href="/wiki/OpenBSD" title="OpenBSD">OpenBSD</a> and <a href="/wiki/NetBSD" title="NetBSD">NetBSD</a>, <code>ioctl</code> is used by the <code><span class="url"><a rel="nofollow" class="external text" href="http://mdoc.su/o,n/bio.4">bio(4)</a></span></code> pseudo-device driver and the <code><a href="/wiki/Bioctl" title="Bioctl">bioctl</a></code> utility to implement <a href="/wiki/RAID" title="RAID">RAID</a> volume management in a unified vendor-agnostic interface similar to <code><a href="/wiki/Ifconfig" title="Ifconfig">ifconfig</a></code>.<sup id="cite_ref-bio.4_1-0" class="reference"><a href="#cite_note-bio.4-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-bioctl_2-0" class="reference"><a href="#cite_note-bioctl-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> </p><p>On <a href="/wiki/NetBSD" title="NetBSD">NetBSD</a>, <code>ioctl</code> is also used by the <code><a href="/wiki/Sysmon" class="mw-redirect" title="Sysmon">sysmon</a></code> framework.<sup id="cite_ref-sysmon_3-0" class="reference"><a href="#cite_note-sysmon-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Terminals">Terminals</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=4" title="Edit section: Terminals"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>One use of <code>ioctl</code> in code exposed to end-user applications is terminal I/O. </p><p><a href="/wiki/Unix" title="Unix">Unix</a> operating systems have traditionally made heavy use of <a href="/wiki/Command-line_interface" title="Command-line interface">command-line interfaces</a>, originally with hardware text terminals such as <a href="/wiki/VT100" title="VT100">VT100s</a> attached to <a href="/wiki/Serial_port" title="Serial port">serial ports</a>, and later with <a href="/wiki/Terminal_emulator" title="Terminal emulator">terminal emulators</a> and <a href="/wiki/Remote_login" class="mw-redirect" title="Remote login">remote login</a> servers using <a href="/wiki/Pseudoterminal" title="Pseudoterminal">pseudoterminals</a>. Serial port devices and pseudoterminals are both controlled and configured using <code>ioctl</code> calls. For instance, the display size is set using the <code>TIOCSWINSZ</code> call. The TIOCSTI (terminal I/O control, simulate terminal input) ioctl function can push a character into a device stream.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Kernel_extensions">Kernel extensions</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=5" title="Edit section: Kernel extensions"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>When applications need to extend the kernel, for instance to accelerate network processing, <code>ioctl</code> calls provide a convenient way to bridge <a href="/wiki/Userspace" class="mw-redirect" title="Userspace">userspace</a> code to kernel extensions. <a href="/wiki/Kernel_extension" class="mw-redirect" title="Kernel extension">Kernel extensions</a> can provide a location in the filesystem that can be opened by name, through which an arbitrary number of <code>ioctl</code> calls can be dispatched, allowing the extension to be programmed without adding system calls to the operating system. </p> <div class="mw-heading mw-heading4"><h4 id="sysctl_alternative">sysctl alternative</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=6" title="Edit section: sysctl alternative"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><span class="anchor" id="sysctl"></span> According to an <a href="/wiki/OpenBSD" title="OpenBSD">OpenBSD</a> developer, <code>ioctl</code> and <code><a href="/wiki/Sysctl" title="Sysctl">sysctl</a></code> are the two <a href="/wiki/System_call" title="System call">system calls</a> for extending the kernel, with <code>sysctl</code> possibly being the simpler of the two.<sup id="cite_ref-onlamp-36_5-0" class="reference"><a href="#cite_note-onlamp-36-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup> </p><p>In <a href="/wiki/NetBSD" title="NetBSD">NetBSD</a>, the <code><a href="/wiki/Sysmon_envsys" class="mw-redirect" title="Sysmon envsys">sysmon_envsys</a></code> framework for <a href="/wiki/Hardware_monitoring" class="mw-redirect" title="Hardware monitoring">hardware monitoring</a> uses <code>ioctl</code> through <code><a href="/wiki/Proplib" class="mw-redirect" title="Proplib">proplib</a></code>; whereas <a href="/wiki/OpenBSD" title="OpenBSD">OpenBSD</a> and <a href="/wiki/DragonFly_BSD" title="DragonFly BSD">DragonFly BSD</a> instead use <code><a href="/wiki/Sysctl" title="Sysctl">sysctl</a></code> for their corresponding <code><a href="/wiki/Hw.sensors" title="Hw.sensors">hw.sensors</a></code> framework. The original revision of <code>envsys</code> in NetBSD was implemented with <code>ioctl</code> before <code>proplib</code> was available, and had a message suggesting that the framework is experimental, and should be replaced by a <code>sysctl(8)</code> interface, should one be developed,<sup id="cite_ref-n40/envsys.4_6-0" class="reference"><a href="#cite_note-n40/envsys.4-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-sensors-ieee07_7-0" class="reference"><a href="#cite_note-sensors-ieee07-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup> which potentially explains the choice of <code>sysctl</code> in OpenBSD with its subsequent introduction of <code><a href="/wiki/Hw.sensors" title="Hw.sensors">hw.sensors</a></code> in 2003. However, when the <code><a href="/wiki/Envsys" title="Envsys">envsys</a></code> framework was redesigned in 2007 around <code>proplib</code>, the system call remained as <code>ioctl</code>, and the message was removed.<sup id="cite_ref-sensors-mmath_8-0" class="reference"><a href="#cite_note-sensors-mmath-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> </p> <div class="mw-heading mw-heading2"><h2 id="Implementations">Implementations</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=7" title="Edit section: Implementations"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Unix">Unix</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=8" title="Edit section: Unix"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>The <code>ioctl</code> system call first appeared in <a href="/wiki/Version_7_Unix" title="Version 7 Unix">Version 7 Unix</a>, as a replacement for the <code>stty</code><sup id="cite_ref-reader_9-0" class="reference"><a href="#cite_note-reader-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> and <code>gtty</code> system calls, with an additional request code argument. An <code>ioctl</code> call takes as <a href="/wiki/Parameter" title="Parameter">parameters</a>: </p> <ol><li>an open <a href="/wiki/File_descriptor" title="File descriptor">file descriptor</a></li> <li>a request code number</li> <li>an untyped <a href="/wiki/Pointer_(computer_programming)" title="Pointer (computer programming)">pointer</a> to data (either going to the driver, coming back from the driver, or both).</li></ol> <p>The <a href="/wiki/Kernel_(operating_system)" title="Kernel (operating system)">kernel</a> generally dispatches an <code>ioctl</code> call straight to the device driver, which can interpret the request number and data in whatever way required. The writers of each driver document request numbers for that particular driver and provide them as <a href="/wiki/Constant_(computer_programming)" title="Constant (computer programming)">constants</a> in a <a href="/wiki/Header_file" class="mw-redirect" title="Header file">header file</a>. </p><p>Request numbers usually combine a code identifying the device or class of devices for which the request is intended and a number indicating the particular request; the code identifying the device or class of devices is usually a single ASCII character. Some Unix systems, including <a href="/wiki/4.2BSD" class="mw-redirect" title="4.2BSD">4.2BSD</a> and later <a href="/wiki/Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a> releases, operating systems derived from those releases, and <a href="/wiki/Linux" title="Linux">Linux</a>, have conventions that also encode within the request number the size of the data to be transferred to/from the device driver and the direction of the data transfer. Regardless of whether any such conventions are followed, the kernel and the driver collaborate to deliver a uniform error code (denoted by the symbolic constant <code>ENOTTY</code>) to an application which makes a request of a driver which does not recognise it. </p><p>The mnemonic <code>ENOTTY</code> (traditionally associated with the textual message "<i><a href="/wiki/Not_a_typewriter" title="Not a typewriter">Not a typewriter</a></i>") derives from the earliest systems that incorporated an <code>ioctl</code> call, where only the <a href="/wiki/Teleprinter" title="Teleprinter">teletype</a> (<code>tty</code>) device raised this error. Though the symbolic mnemonic is fixed by compatibility requirements, some modern systems more helpfully render a more general message such as "<i>Inappropriate device control operation</i>" (or a <a href="/wiki/Internationalization_and_localization" title="Internationalization and localization">localization</a> thereof). </p><p><code>TCSETS</code> exemplifies an <code>ioctl</code> call on a <a href="/wiki/Serial_port" title="Serial port">serial port</a>. The normal read and write calls on a serial port receive and send data bytes. An <code>ioctl(fd,TCSETS,data)</code> call, separate from such normal I/O, controls various driver options like handling of special <a href="/wiki/Character_(computing)" title="Character (computing)">characters</a>, or the output signals on the port (such as the <a href="/wiki/Data_Terminal_Ready" title="Data Terminal Ready">DTR</a> signal). </p> <div class="mw-heading mw-heading3"><h3 id="Win32">Win32</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=9" title="Edit section: Win32"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A Win32 <code>DeviceIoControl</code> takes as parameters: </p> <ol><li>an open object handle (the Win32 equivalent of a file descriptor)</li> <li>a request code number (the "control code")</li> <li>a buffer for input parameters</li> <li>length of the input buffer</li> <li>a buffer for output results</li> <li>length of the output buffer</li> <li>an <code>OVERLAPPED</code> structure, if <a href="/wiki/Overlapped_I/O" title="Overlapped I/O">overlapped I/O</a> is being used.</li></ol> <p>The Win32 device control code takes into consideration the mode of the operation being performed. </p><p>There are 4 defined modes of operation, impacting the security of the device driver - </p> <ol><li><code>METHOD_IN_DIRECT</code>: The buffer address is verified to be readable by the user mode caller.</li> <li><code>METHOD_OUT_DIRECT</code>: The buffer address is verified to be writable by the user mode caller.</li> <li><code>METHOD_NEITHER</code>: User mode virtual addresses are passed to the driver without mapping or validation.</li> <li><code>METHOD_BUFFERED</code>: IO Manager controlled shared buffers are used to move data to and from user mode.</li></ol> <div class="mw-heading mw-heading2"><h2 id="Alternatives">Alternatives</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=10" title="Edit section: Alternatives"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Other_vectored_call_interfaces">Other vectored call interfaces</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=11" title="Edit section: Other vectored call interfaces"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Devices and kernel extensions may be linked to <a href="/wiki/User_space_and_kernel_space" title="User space and kernel space">userspace</a> using additional new system calls, although this approach is rarely taken, because operating system developers try to keep the system call interface focused and efficient. </p><p>On Unix operating systems, two other vectored call interfaces are popular: the <code>fcntl</code> ("file control") system call configures open files, and is used in situations such as enabling <a href="/wiki/Asynchronous_I/O" title="Asynchronous I/O">non-blocking I/O</a>; and the <code>setsockopt</code> ("set socket option") system call configures open <a href="/wiki/Berkeley_sockets" title="Berkeley sockets">network sockets</a>, a facility used to configure the <code><a href="/wiki/Ipfw" class="mw-redirect" title="Ipfw">ipfw</a></code> packet firewall on <a href="/wiki/Berkeley_Software_Distribution" title="Berkeley Software Distribution">BSD</a> Unix systems. </p> <div class="mw-heading mw-heading3"><h3 id="Memory_mapping">Memory mapping</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=12" title="Edit section: Memory mapping"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <dl><dt>Unix</dt> <dd>Device interfaces and input/output capabilities are sometimes provided using <a href="/wiki/Memory-mapped_file" title="Memory-mapped file">memory-mapped files</a>. Applications that interact with devices open a location on the filesystem corresponding to the device, as they would for an <code>ioctl</code> call, but then use memory mapping system calls to tie a portion of their address space to that of the kernel. This interface is a far more efficient way to provide bulk data transfer between a device and a userspace application; individual <code>ioctl</code> or read/write system calls inflict overhead due to repeated userspace-to-kernel transitions, where access to a memory-mapped range of addresses incurs no such overhead.</dd> <dt>Win32</dt> <dd>Buffered IO methods or named file mapping objects can be used; however, for simple device drivers the standard <code>DeviceIoControl METHOD_</code> accesses are sufficient.</dd></dl> <div class="mw-heading mw-heading3"><h3 id="Netlink">Netlink</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=13" title="Edit section: Netlink"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Netlink" title="Netlink">Netlink</a> is a socket-like mechanism for <a href="/wiki/Inter-process_communication" title="Inter-process communication">inter-process communication</a> (IPC), designed to be a more flexible successor to <code>ioctl</code>. </p> <div class="mw-heading mw-heading2"><h2 id="Implications">Implications</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=14" title="Edit section: Implications"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-heading mw-heading3"><h3 id="Complexity">Complexity</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=15" title="Edit section: Complexity"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><code>ioctl</code> calls minimize the complexity of the kernel's system call interface. However, by providing a place for developers to "stash" bits and pieces of kernel programming interfaces, <code>ioctl</code> calls complicate the overall user-to-kernel API. A kernel that provides several hundred system calls may provide several thousand ioctl calls. </p><p>Though the interface to <code>ioctl</code> calls appears somewhat different from conventional system calls, there is in practice little difference between an <code>ioctl</code> call and a system call; an <code>ioctl</code> call is simply a system call with a different dispatching mechanism. Many of the arguments against expanding the kernel system call interface could therefore be applied to <code>ioctl</code> interfaces. </p><p>To application developers, system calls appear no different from application subroutines; they are simply function calls that take arguments and return values. The core libraries (e.g. <code><a href="/wiki/Libc" class="mw-redirect" title="Libc">libc</a></code>) mask the complexity involved in invoking system calls. The same is true for <code>ioctl</code>s, where driver interfaces usually come with a user space library. (E.g. <a href="/wiki/Mesa_(computer_graphics)" title="Mesa (computer graphics)">Mesa</a> for the <a href="/wiki/Direct_Rendering_Infrastructure" title="Direct Rendering Infrastructure">Direct Rendering Infrastructure</a> of graphics drivers.) </p><p><a href="/wiki/Pcap" title="Pcap">Libpcap</a> and <a href="/w/index.php?title=Libdnet&action=edit&redlink=1" class="new" title="Libdnet (page does not exist)">libdnet</a> are two examples of third-party wrapper Unix libraries designed to mask the complexity of <code>ioctl</code> interfaces, for packet capture and packet I/O, respectively. </p> <div class="mw-heading mw-heading3"><h3 id="Security">Security</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=16" title="Edit section: Security"><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-Unreferenced_section plainlinks metadata ambox ambox-content ambox-Unreferenced" role="presentation"><tbody><tr><td class="mbox-image"><div class="mbox-image-div"><span typeof="mw:File"><a href="/wiki/File:Question_book-new.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/50px-Question_book-new.svg.png" decoding="async" width="50" height="39" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/75px-Question_book-new.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/99/Question_book-new.svg/100px-Question_book-new.svg.png 2x" data-file-width="512" data-file-height="399" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">This section <b>does not <a href="/wiki/Wikipedia:Citing_sources" title="Wikipedia:Citing sources">cite</a> any <a href="/wiki/Wikipedia:Verifiability" title="Wikipedia:Verifiability">sources</a></b>.<span class="hide-when-compact"> Please help <a href="/wiki/Special:EditPage/Ioctl" title="Special:EditPage/Ioctl">improve this section</a> by <a href="/wiki/Help:Referencing_for_beginners" title="Help:Referencing for beginners">adding citations to reliable sources</a>. Unsourced material may be challenged and <a href="/wiki/Wikipedia:Verifiability#Burden_of_evidence" title="Wikipedia:Verifiability">removed</a>.</span> <span class="date-container"><i>(<span class="date">December 2024</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> <p>In traditional design, kernels resided in <a href="/wiki/Protection_ring" title="Protection ring">ring 0</a>, separated from device drivers in ring 1, and in <a href="/wiki/Microkernel" title="Microkernel">microkernels</a>, also from each other. This has largely been given up due adding the same overhead of transitioning between rings to driver/kernel interfaces, that syscalls impose on kernel/user space interfaces. This has led to the difficult-in-practice requirement that all drivers, which now reside in ring 0 as well, must uphold the same level of security as the kernel core. </p><p>While the user-to-kernel interfaces of mainstream operating systems are often audited heavily for code flaws and security vulnerabilities prior to release, these audits typically focus on the well-documented system call interfaces. For instance, auditors might ensure that sensitive security calls such as changing user IDs are only available to administrative users.<br /> Because the handler for an <code>ioctl</code> call also resides directly in ring 0, the input from <a href="/wiki/User_space_and_kernel_space" title="User space and kernel space">userspace</a> should be validated just as carefully. As vulnerabilities in device drivers can be exploited by local users, e.g. by passing invalid buffers to <code>ioctl</code> calls.<br /> In practice, this is not the case. <code>ioctl</code> interfaces are larger, more diverse, and less well defined, and thus harder to audit than system calls. Furthermore, because <code>ioctl</code> calls can be provided by third-party developers, often after the core operating system has been released, <code>ioctl</code> call implementations may generally receive less scrutiny and thus harbor more vulnerabilities. Finally, some <code>ioctl</code> calls, particularly for third-party device drivers, can be entirely undocumented. </p><p>Varying fixes for this have been created, with the goal of achieving an equivalent to the former security, while keeping the gained speed.<br /> <a href="/wiki/Win32" class="mw-redirect" title="Win32">Win32</a> and <a href="/wiki/Unix" title="Unix">Unix</a> operating systems can protect a userspace device name from access by applications with specific access controls applied to the device. Security problems can arise when device driver developers do not apply appropriate access controls to the userspace accessible object.<br /> Some modern operating systems protect the kernel from hostile userspace code (such as applications that have been infected by <a href="/wiki/Buffer_overflow" title="Buffer overflow">buffer overflow</a> exploits) using <a href="/wiki/Wrapper_function#Library_functions_and_system_calls" title="Wrapper function">system call wrappers</a>. System call wrappers implement <a href="/wiki/Role-based_access_control" title="Role-based access control">role-based access control</a> by specifying which system calls can be invoked by which applications; wrappers can, for instance, be used to "revoke" the right of a mail program to spawn other programs. <code>ioctl</code> interfaces complicate system call wrappers because there are large numbers of them, each taking different arguments, some of which may be required by normal programs.<br /> Furthermore, such solutions negate the gained reduction of overhead. </p> <div class="mw-heading mw-heading2"><h2 id="Further_reading">Further reading</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Ioctl&action=edit&section=17" title="Edit section: Further reading"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/W._Richard_Stevens" title="W. Richard Stevens">W. Richard Stevens</a>, <i>Advanced Programming in the UNIX Environment</i> (Addison-Wesley, 1992, <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><a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/0-201-56317-7" title="Special:BookSources/0-201-56317-7">0-201-56317-7</a>), section 3.14.</li> <li><a rel="nofollow" class="external text" href="https://www.gnu.org/s/libc/manual/html_node/IOCTLs.html">Generic I/O Control operations</a> in the online manual for the <a href="/wiki/GNU_C_Library" class="mw-redirect" title="GNU C Library">GNU C Library</a></li> <li><span class="plainlinksneverexpand"><code><a rel="nofollow" class="external text" href="http://man.cat-v.org/unix_7th/2/ioctl">ioctl(2)</a></code></span> – <a href="/wiki/Version_7_Unix" title="Version 7 Unix">Version 7 Unix</a> Programmer's <a href="/wiki/Man_page" title="Man page">Manual</a></li> <li><span class="plainlinksneverexpand"><code><a rel="nofollow" class="external text" href="https://manned.org/ioctl.2">ioctl(2)</a></code></span> – <a href="/wiki/Linux" title="Linux">Linux</a> Programmer's <a href="/wiki/Man_page" title="Man page">Manual</a> – System Calls</li> <li><span class="plainlinksneverexpand"><code><a rel="nofollow" class="external text" href="https://www.freebsd.org/cgi/man.cgi?query=ioctl&sektion=2">ioctl(2)</a></code></span> – <a href="/wiki/FreeBSD" title="FreeBSD">FreeBSD</a> System Calls <a href="/wiki/Man_page" title="Man page">Manual</a></li> <li><span class="plainlinksneverexpand"><code><a rel="nofollow" class="external text" href="https://man.openbsd.org/ioctl.2">ioctl(2)</a></code></span> – <a href="/wiki/OpenBSD" title="OpenBSD">OpenBSD</a> System Calls <a href="/wiki/Man_page" title="Man page">Manual</a></li> <li><span class="plainlinksneverexpand"><code><a rel="nofollow" class="external text" href="https://docs.oracle.com/cd/E88353_01/html/E37841/ioctl-2.html">ioctl(2)</a></code></span> – <a href="/wiki/Solaris_(operating_system)" class="mw-redirect" title="Solaris (operating system)">Solaris 11.4</a> System Calls Reference <a href="/wiki/Man_page" title="Man page">Manual</a></li> <li><a rel="nofollow" class="external text" href="http://msdn2.microsoft.com/en-us/library/aa363216.aspx">"DeviceIoControl Documentation</a> at the <a href="/wiki/Microsoft_Developer_Network" title="Microsoft Developer Network">Microsoft Developer Network</a></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=Ioctl&action=edit&section=18" 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"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-bio.4-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-bio.4_1-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFNiklas_Hallqvist_(2002)Marco_Peereboom_(2006)" class="citation web cs1">Niklas Hallqvist (2002); Marco Peereboom (2006). <a rel="nofollow" class="external text" href="http://bxr.su/o/share/man/man4/bio.4">"bio(4) — block I/O ioctl tunnel pseudo-device"</a>. <i>BSD Cross Reference</i>. <a href="/wiki/OpenBSD" title="OpenBSD">OpenBSD</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=BSD+Cross+Reference&rft.atitle=bio%284%29+%E2%80%94+block+I%2FO+ioctl+tunnel+pseudo-device&rft.au=Niklas+Hallqvist+%282002%29&rft.au=Marco+Peereboom+%282006%29&rft_id=http%3A%2F%2Fbxr.su%2Fo%2Fshare%2Fman%2Fman4%2Fbio.4&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span><span class="cs1-maint citation-comment"><code class="cs1-code">{{<a href="/wiki/Template:Cite_web" title="Template:Cite web">cite web</a>}}</code>: CS1 maint: numeric names: authors list (<a href="/wiki/Category:CS1_maint:_numeric_names:_authors_list" title="Category:CS1 maint: numeric names: authors list">link</a>)</span> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation book cs1">"bio — block I/O ioctl tunnel pseudo-device". <a rel="nofollow" class="external text" href="http://mdoc.su/o,n/bio.4"><i>OpenBSD manual page server</i></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=bio+%E2%80%94+block+I%2FO+ioctl+tunnel+pseudo-device&rft.btitle=OpenBSD+manual+page+server&rft_id=http%3A%2F%2Fmdoc.su%2Fo%2Cn%2Fbio.4&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></li></ul> </span></li> <li id="cite_note-bioctl-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-bioctl_2-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFMarco_Peereboom2005" class="citation web cs1">Marco Peereboom (2005). <a rel="nofollow" class="external text" href="http://bxr.su/o/sbin/bioctl/bioctl.8">"bioctl(8) — RAID management interface"</a>. <i>BSD Cross Reference</i>. <a href="/wiki/OpenBSD" title="OpenBSD">OpenBSD</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=BSD+Cross+Reference&rft.atitle=bioctl%288%29+%E2%80%94+RAID+management+interface&rft.date=2005&rft.au=Marco+Peereboom&rft_id=http%3A%2F%2Fbxr.su%2Fo%2Fsbin%2Fbioctl%2Fbioctl.8&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span> <ul><li><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation book cs1">"bioctl — RAID management interface". <a rel="nofollow" class="external text" href="http://mdoc.su/o,n/bioctl.8"><i>OpenBSD manual page server</i></a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=bioctl+%E2%80%94+RAID+management+interface&rft.btitle=OpenBSD+manual+page+server&rft_id=http%3A%2F%2Fmdoc.su%2Fo%2Cn%2Fbioctl.8&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></li></ul> </span></li> <li id="cite_note-sysmon-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-sysmon_3-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://mdoc.su/n/sysmon.4">"sysmon(4) — system monitoring and power management interface"</a>. <a href="/wiki/NetBSD" title="NetBSD">NetBSD</a>. <q>An ioctl(2) interface available via /dev/sysmon.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=sysmon%284%29+%E2%80%94+system+monitoring+and+power+management+interface&rft.pub=NetBSD&rft_id=http%3A%2F%2Fmdoc.su%2Fn%2Fsysmon.4&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" 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="CITEREFChristiansenTorkington1998" class="citation book cs1"><a href="/wiki/Tom_Christiansen" title="Tom Christiansen">Christiansen, Tom</a>; Torkington, Nathan (1998). "12: Packages, Libraries, and Modules". <a rel="nofollow" class="external text" href="https://books.google.com/books?id=IzdJIax6J5oC"><i>Perl Cookbook: Solutions & Examples for Perl Programmers</i></a> (2 ed.). Sebastopol, California: O'Reilly Media, Inc. (published 2003). p. 482. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/9780596554965" title="Special:BookSources/9780596554965"><bdi>9780596554965</bdi></a><span class="reference-accessdate">. Retrieved <span class="nowrap">2016-11-15</span></span>. <q>[...] TIOCSTI [...] stands for 'terminal I/O control, simulate terminal input.' On systems that implement this function, it will push one character into your device stream so that the next time any process reads from that device, it gets the character you put there.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=bookitem&rft.atitle=12%3A+Packages%2C+Libraries%2C+and+Modules&rft.btitle=Perl+Cookbook%3A+Solutions+%26+Examples+for+Perl+Programmers&rft.place=Sebastopol%2C+California&rft.pages=482&rft.edition=2&rft.pub=O%27Reilly+Media%2C+Inc.&rft.date=1998&rft.isbn=9780596554965&rft.aulast=Christiansen&rft.aufirst=Tom&rft.au=Torkington%2C+Nathan&rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DIzdJIax6J5oC&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></span> </li> <li id="cite_note-onlamp-36-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-onlamp-36_5-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFFederico_Biancuzzi2004" class="citation web cs1">Federico Biancuzzi (2004-10-28). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20041029232336/http://www.onlamp.com/lpt/a/5302">"OpenBSD 3.6 Live"</a>. <i><a href="/wiki/ONLamp" class="mw-redirect" title="ONLamp">ONLamp</a></i>. <a href="/wiki/O%27Reilly_Media" title="O'Reilly Media">O'Reilly Media</a>. Archived from <a rel="nofollow" class="external text" href="http://www.onlamp.com/lpt/a/5302">the original</a> on 2004-10-29<span class="reference-accessdate">. Retrieved <span class="nowrap">2019-03-20</span></span>. <q>There are two system calls that can be used to add functionality to the kernel (without adding yet another system call): ioctl(2) and sysctl(3). The latter was chosen because it was very simple to implement the new feature.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=unknown&rft.jtitle=ONLamp&rft.atitle=OpenBSD+3.6+Live&rft.date=2004-10-28&rft.au=Federico+Biancuzzi&rft_id=http%3A%2F%2Fwww.onlamp.com%2Flpt%2Fa%2F5302&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></span> </li> <li id="cite_note-n40/envsys.4-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-n40/envsys.4_6-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFTim_RightnourBill_Squier2007" class="citation web cs1">Tim Rightnour; Bill Squier (2007-12-19). <a rel="nofollow" class="external text" href="http://mdoc.su/n40/envsys.4">"envsys -- Environmental Systems API"</a>. NetBSD 4.0. <q>This API is experimental and may be deprecated at any time ... This entire API should be replaced by a sysctl(8) interface or a kernel events mechanism, should one be developed.</q></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=unknown&rft.btitle=envsys+--+Environmental+Systems+API&rft.series=NetBSD+4.0&rft.date=2007-12-19&rft.au=Tim+Rightnour&rft.au=Bill+Squier&rft_id=http%3A%2F%2Fmdoc.su%2Fn40%2Fenvsys.4&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></span> </li> <li id="cite_note-sensors-ieee07-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-sensors-ieee07_7-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFConstantine_A._Murenin2007" class="citation conference cs1">Constantine A. Murenin (2007-04-17). "3.5. NetBSD's sysmon(4)". <a rel="nofollow" class="external text" href="http://sensors.cnst.su/IEEE_ICNSC_2007"><i>Generalised Interfacing with Microprocessor System Hardware Monitors</i></a>. Proceedings of 2007 IEEE International Conference on Networking, Sensing and Control, 15–17 April 2007. London, United Kingdom: <a href="/wiki/Institute_of_Electrical_and_Electronics_Engineers" title="Institute of Electrical and Electronics Engineers">IEEE</a>. pp. <span class="nowrap">901–</span>906. <a href="/wiki/Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FICNSC.2007.372901">10.1109/ICNSC.2007.372901</a>. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a> <a href="/wiki/Special:BookSources/978-1-4244-1076-7" title="Special:BookSources/978-1-4244-1076-7"><bdi>978-1-4244-1076-7</bdi></a>. IEEE ICNSC 2007, pp. 901—906.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=conference&rft.atitle=3.5.+NetBSD%27s+sysmon%284%29&rft.btitle=Generalised+Interfacing+with+Microprocessor+System+Hardware+Monitors&rft.place=London%2C+United+Kingdom&rft.pages=%3Cspan+class%3D%22nowrap%22%3E901-%3C%2Fspan%3E906&rft.pub=IEEE&rft.date=2007-04-17&rft_id=info%3Adoi%2F10.1109%2FICNSC.2007.372901&rft.isbn=978-1-4244-1076-7&rft.au=Constantine+A.+Murenin&rft_id=http%3A%2F%2Fsensors.cnst.su%2FIEEE_ICNSC_2007&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></span> </li> <li id="cite_note-sensors-mmath-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-sensors-mmath_8-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFConstantine_A._Murenin2010" class="citation thesis cs1">Constantine A. Murenin (2010-05-21). "6.1. Framework timeline; 7.1. NetBSD envsys / sysmon". <a rel="nofollow" class="external text" href="http://cnst.su/MMathCS"><i>OpenBSD Hardware Sensors — Environmental Monitoring and Fan Control</i></a> (<a href="/wiki/Master_of_Mathematics#Canada" title="Master of Mathematics">MMath</a> thesis). <a href="/wiki/University_of_Waterloo" title="University of Waterloo">University of Waterloo</a>: UWSpace. <a href="/wiki/Hdl_(identifier)" class="mw-redirect" title="Hdl (identifier)">hdl</a>:<a rel="nofollow" class="external text" href="https://hdl.handle.net/10012%2F5234">10012/5234</a>. Document ID: ab71498b6b1a60ff817b29d56997a418.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adissertation&rft.title=OpenBSD+Hardware+Sensors+%E2%80%94+Environmental+Monitoring+and+Fan+Control.&rft.degree=MMath&rft.inst=UWSpace&rft.date=2010-05-21&rft_id=info%3Ahdl%2F10012%2F5234&rft.au=Constantine+A.+Murenin&rft_id=http%3A%2F%2Fcnst.su%2FMMathCS&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></span> </li> <li id="cite_note-reader-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-reader_9-0">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite id="CITEREFMcIlroy1987" class="citation techreport cs1"><a href="/wiki/Doug_McIlroy" class="mw-redirect" title="Doug McIlroy">McIlroy, M. D.</a> (1987). <a rel="nofollow" class="external text" href="https://web.archive.org/web/20230730004547/https://www.cs.dartmouth.edu/~doug/reader.pdf"><i>A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986</i></a> <span class="cs1-format">(PDF)</span> (Technical report). CSTR. Bell Labs. 139. Archived from <a rel="nofollow" class="external text" href="https://www.cs.dartmouth.edu/~doug/reader.pdf">the original</a> <span class="cs1-format">(PDF)</span> on 2023-07-30.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=report&rft.btitle=A+Research+Unix+reader%3A+annotated+excerpts+from+the+Programmer%27s+Manual%2C+1971%E2%80%931986&rft.series=CSTR&rft.pub=Bell+Labs&rft.date=1987&rft.aulast=McIlroy&rft.aufirst=M.+D.&rft_id=https%3A%2F%2Fwww.cs.dartmouth.edu%2F~doug%2Freader.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AIoctl" class="Z3988"></span></span> </li> </ol></div></div> <!-- NewPP limit report Parsed by mw‐web.eqiad.next‐6dddd899f5‐4qb9q Cached time: 20250305214234 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.270 seconds Real time usage: 0.386 seconds Preprocessor visited node count: 1762/1000000 Post‐expand include size: 36418/2097152 bytes Template argument size: 2232/2097152 bytes Highest expansion depth: 14/100 Expensive parser function count: 3/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 44280/5000000 bytes Lua time usage: 0.150/10.000 seconds Lua memory usage: 5836468/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 333.512 1 -total 35.88% 119.656 1 Template:Reflist 20.63% 68.799 1 Template:Short_description 19.30% 64.374 5 Template:Cite_web 16.87% 56.267 1 Template:More_footnotes 15.56% 51.896 2 Template:Ambox 11.90% 39.675 2 Template:Pagetype 10.26% 34.219 1 Template:ISBN 8.16% 27.231 5 Template:Man 8.10% 27.026 1 Template:Catalog_lookup_link --> <!-- Saved in parser cache with key enwiki:pcache:2924038:|#|:idhash:canonical and timestamp 20250305214234 and revision id 1265261534. 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?useformat=desktop&type=1x1&usesul3=0" 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=Ioctl&oldid=1265261534">https://en.wikipedia.org/w/index.php?title=Ioctl&oldid=1265261534</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">Categories</a>: <ul><li><a href="/wiki/Category:Unix" title="Category:Unix">Unix</a></li><li><a href="/wiki/Category:System_calls" title="Category:System calls">System calls</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:CS1_maint:_numeric_names:_authors_list" title="Category:CS1 maint: numeric names: authors list">CS1 maint: numeric names: authors list</a></li><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:Articles_lacking_in-text_citations_from_February_2010" title="Category:Articles lacking in-text citations from February 2010">Articles lacking in-text citations from February 2010</a></li><li><a href="/wiki/Category:All_articles_lacking_in-text_citations" title="Category:All articles lacking in-text citations">All articles lacking in-text citations</a></li><li><a href="/wiki/Category:Articles_needing_additional_references_from_December_2024" title="Category:Articles needing additional references from December 2024">Articles needing additional references from December 2024</a></li><li><a href="/wiki/Category:All_articles_needing_additional_references" title="Category:All articles needing additional references">All articles needing additional references</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 26 December 2024, at 01:21<span class="anonymous-show"> (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=Ioctl&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"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></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"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" lang="en" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div 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"> <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> <div class="vector-sticky-header-context-bar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-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-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" >ioctl</div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>7 languages</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Add topic</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="mw-portlet mw-portlet-dock-bottom emptyPortlet" id="p-dock-bottom"> <ul> </ul> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.eqiad.main-748fc965c8-9wlps","wgBackendResponseTime":143,"wgPageParseReport":{"limitreport":{"cputime":"0.270","walltime":"0.386","ppvisitednodes":{"value":1762,"limit":1000000},"postexpandincludesize":{"value":36418,"limit":2097152},"templateargumentsize":{"value":2232,"limit":2097152},"expansiondepth":{"value":14,"limit":100},"expensivefunctioncount":{"value":3,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":44280,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 333.512 1 -total"," 35.88% 119.656 1 Template:Reflist"," 20.63% 68.799 1 Template:Short_description"," 19.30% 64.374 5 Template:Cite_web"," 16.87% 56.267 1 Template:More_footnotes"," 15.56% 51.896 2 Template:Ambox"," 11.90% 39.675 2 Template:Pagetype"," 10.26% 34.219 1 Template:ISBN"," 8.16% 27.231 5 Template:Man"," 8.10% 27.026 1 Template:Catalog_lookup_link"]},"scribunto":{"limitreport-timeusage":{"value":"0.150","limit":"10.000"},"limitreport-memusage":{"value":5836468,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.next-6dddd899f5-4qb9q","timestamp":"20250305214234","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Ioctl","url":"https:\/\/en.wikipedia.org\/wiki\/Ioctl","sameAs":"http:\/\/www.wikidata.org\/entity\/Q837975","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q837975","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-10-17T01:57:00Z","dateModified":"2024-12-26T01:21:10Z","headline":"system call"}</script> </body> </html>