Ioctl

En informatique, ioctl, raccourci signifiant input-output control (contrôle d'entrée-sortie), est un appel système pour des opérations d'entrée-sortie spécifiques à un périphérique qui ne peuvent être exécutées par un appel système classique. Il reçoit un paramètre spécifiant un code-requête à exécuter ; l'effet de cet appel dépend complètement du code-requête. Les codes-requêtes sont souvent spécifiques au périphérique. Par exemple, un pilote de CD-ROM qui souhaite éjecter un disque d'un lecteur doit fournir un code-requête à un ioctl pour faire cela. Des codes-requêtes indépendants du périphérique sont quelquefois utilisés pour donner un accès, depuis l'espace utilisateur, à des fonctions du noyau utilisées uniquement par le cœur du système ou encore en développement.

L'appel système ioctl est apparu pour la première fois dans la version 7 d'Unix sous ce nom. il est supporté par la plupart des systèmes Unix et apparentés, dont Linux et OS X, bien que les codes-requêtes proposés diffèrent d'un système d'exploitation à l'autre. Microsoft Windows fournit une fonction similaire, nommée DeviceIoControl, dans son API Win32.

Fonctionnement

Les systèmes d'exploitation conventionnels divisent la mémoire en 2 espaces : l'espace utilisateur et l'espace noyau. Le code d'une application telle qu'un éditeur de texte réside dans l'espace utilisateur, tandis que les fonctionnalités sous-jacentes du système d'exploitation, telles que la pile réseau, résident dans le noyau. Le code du noyau gère les ressources sensibles et met en œuvre les barrières de sécurité et de fiabilité entre les applications. Pour cette raison, les applications dans l'espace utilisateur ne peuvent pas accéder directement aux ressources du noyau.

Les applications en espace utilisateur font généralement des requêtes au noyau par l'intermédiaire des appels système, dont le code se trouve dans l'espace noyau. Un appel système prend généralement la forme d'un « vecteur d'appels système », dans lequel l'appel système désiré est indiqué par un numéro d'index. Par exemple, exit() peut être l'appel système numéro 1, et write() l'appel système numéro 4. Le vecteur d'appels système est utilisé pour trouver la fonction du noyau désirée pour la requête. C'est pourquoi les systèmes d'exploitation classiques offrent généralement plusieurs centaines d'appels système à l'espace utilisateur.

Bien qu'étant un moyen facile d'accéder aux fonctions de l'OS, les appels système peuvent ne pas être adaptés pour l'accès à des périphériques physiques non standard. Les périphériques ne sont adressables directement que depuis l'espace noyau. Mais souvent, le code en espace utilisateur a besoin d'accéder directement à un périphérique (par exemple, configurer le media type d'une interface Ethernet). Les OS modernes supportent un grand nombre de périphériques avec eux-mêmes un grand nombre de fonctions. Beaucoup de ces fonctions ne peuvent pas être prévues à l'avance et ne sont donc pas forcément implémentables par des appels système.

Pour résoudre ce problème, les noyaux sont conçus pour être extensibles et acceptent donc des modules appelés pilotes de périphérique qui s'exécutent en espace noyau et peuvent adresser directement des périphériques. Une interface de type ioctl se caractérise par un seul appel système par lequel le programme en espace utilisateur peut communiquer avec le périphérique. Comme vu plus haut, les requêtes vers le périphérique sont vectorisées à partir de cet appel système en utilisant typiquement un identifiant unique et un code de requête. Le noyau permet, par ce moyen, au programme utilisateur de communiquer avec le pilote de périphérique sans connaitre les fonctions de celui-ci et sans implémenter un nombre important d'appels système.

Exemples d'utilisations

Configuration de périphériques

L'utilisation la plus courante des ioctls concerne le contrôle des périphériques physiques. Par exemple, sur les systèmes d'exploitation Win32 (Windows), on peut communiquer avec les périphériques USB à l'aide d'ioctls. On peut aussi obtenir des informations sur la géométrie des disques durs.

Les OS de type Unix (Linux, FreeBSD, OS X) utilisent les ioctls pour configurer les interfaces réseau. Par exemple, sur les systèmes dérivés de BSD, on peut configurer le masque de sous-réseau en ouvrant une socket puis en utilisant l'ioctl SIOCSIFNETMASK sur celle-ci.

Terminaux

Une utilisation visible des ioctls est le contrôle des terminaux.

Les systèmes d'exploitation de type Unix ont traditionnellement comme interface un interpréteur de commandes. L'interpréteur de commandes Unix est basé sur des pseudo-terminaux (TTY) qui émulent les anciens terminaux physiques en mode texte comme des VT100. Ces pseudo-terminaux sont configurés comme s'ils étaient des périphériques logiques à l'aide d'ioctls. Par exemple, la taille de la fenêtre d'un pseudo-terminal peut être configurée en utilisant l'ioctl TIOCSWINSZ.

Extensions du noyau

Quand une application veut étendre les possibilités du noyau, pour accélérer les traitements réseau par exemple, les ioctls fournissent un pont entre le code en espace utilisateur et les extensions, ou modules. L'interface de ces modules est souvent constituée d'entrées dans le système de fichiers au travers desquelles un certain nombre d'ioctls peuvent être appliqués. Par exemple, sur le système d'exploitation Solaris, la couche de filtrage des paquets IP peut être configurée grâce aux ioctls de la famille SIOCIPF*.

Implémentations

Un ioctl Unix prend comme paramètres :

  1. un descripteur de fichier ouvert ;
  2. le code spécifique de la requête ;
  3. soit une valeur discrète (entier ou autre), soit un pointeur sur une structure de données vers le pilote de périphérique ou depuis le pilote de périphérique, ou bien les deux.

Le noyau transfère directement la requête au pilote de périphérique. Charge à celui-ci d'interpréter la requête. Les développeurs du pilote de périphérique fournissent la liste documentée des ioctls supportés par ce pilote sous forme de constantes dans un en-tête (fichier .h).

Les OS de type Unix, y compris Linux, suivent une convention qui consiste à encoder à l'intérieur de la requête :

  1. la taille des données à transférer ;
  2. la direction du transfert ;
  3. l'identité du pilote de périphérique.

Si le pilote de périphérique ne reconnait pas la requête, un code d'erreur unique est renvoyé (code ENOTTY).

Note : le code ENOTTY (dérivé du message « Not a typewriter ») vient du fait que dans les anciens systèmes seuls les télétypes (TTY) pouvaient renvoyer cette erreur. Bien qu'utilisé pour des raisons de compatibilité, les systèmes plus récents renvoient plutôt un message du type « Inappropriate device control operation ».

Par exemple, l'ioctl TCSETS est utilisé par les ports série. Le transfert de données est géré par les appels read() et write() alors que l'appel ioctl(fd, TCSETS, data) permet de contrôler divers états du port.

Un ioctl Win32 prend comme paramètres :

  1. un handle ouvert sur un objet (l'équivalent Win32 d'un descripteur de fichier) ;
  2. un code de requête (le control code) ;
  3. un tampon pour les paramètres d'entrée ;
  4. la taille du tampon d'entrée ;
  5. un tampon pour les paramètres de sortie ;
  6. la taille du tampon de sortie.
  7. une structure OVERLAPPED si le mode overlapped est utilisé.

Le code de requête prend en compte le mode de l'opération (impactant pour la sécurité du pilote) :

  1. METHOD_IN_DIRECT — l'adresse du tampon doit être autorisée en lecture pour l'appelant en mode utilisateur ;
  2. METHOD_OUT_DIRECT — l'adresse du tampon doit être autorisée en écriture pour l'appelant en mode utilisateur ;
  3. METHOD_NEITHER — l'adresse virtuelle du tampon est passé sans vérification ni mapping ;
  4. METHOD_BUFFERED — les tampons partagés du IO Manager sont utilisés pour transférer des données de et vers l'espace utilisateur.

Alternatives

Autres interfaces d'appel à base de vecteurs

Les périphériques et modules peuvent s'interfacer avec l'espace utilisateur grâce à des nouveaux appels système. Cependant, cette approche est rarement utilisée.

Sur des OS de type Unix, deux autres interfaces sont couramment utilisées :

  1. l'appel fcntl (file control) permet de configurer des fichiers préalablement ouverts (permet, par exemple, d'activer les I/O non bloquantes) ;
  2. l'appel setsockopt (set socket option) permet de configurer des sockets préalablement ouvertes (permet, par exemple, de configurer le pare-feu ipfw sur les systèmes BSD).

Mapping mémoire

Références


Read other articles:

قرية فرانكلين الإحداثيات 42°20′26″N 75°09′57″W / 42.3406°N 75.1658°W / 42.3406; -75.1658  [1] تقسيم إداري  البلد الولايات المتحدة[2]  التقسيم الأعلى مقاطعة ديلاوير  خصائص جغرافية  المساحة 0.894868 كيلومتر مربع0.894866 كيلومتر مربع (1 أبريل 2010)  ارتفاع 376 متر  عدد الس...

 

Artikel ini tidak memiliki referensi atau sumber tepercaya sehingga isinya tidak bisa dipastikan. Tolong bantu perbaiki artikel ini dengan menambahkan referensi yang layak. Tulisan tanpa sumber dapat dipertanyakan dan dihapus sewaktu-waktu.Cari sumber: Fokker K.I – berita · surat kabar · buku · cendekiawan · JSTOR Fokker K.I/M.9 Jenis Pesawat eksperimental Negara asal Jerman Pembuat Fokker Penerbangan perdana 1915 Fokker M.9, juga dikenal sebagai Fokke...

 

Luigi Barnabò Informazioni personali Arbitro di Calcio Sezione Milano[1] Attività nazionale Anni Campionato Ruolo 1914-19211921-1925 Prima CategoriaPrima Divisione ArbitroArbitro Luigi Barnabò (Milano, 22 luglio 1889[2] – Milano, 2 febbraio 1960) è stato un arbitro di calcio italiano. Il suo cognome è stato spesso travisato in Bernabè di Milano, ma in tutti i documenti dell'Associazione Italiana Arbitri non compare alcun arbitro a Milano con tale cognome nel periodo i...

Peta menunjukkan lokasi San Narciso San Narciso adalah munisipalitas yang terletak di provinsi Quezon, Filipina. Pada tahun 2010, munisipalitas ini memiliki populasi sebesar 39.828 jiwa dan 9.957 tempat tinggal. Pembagian wilayah Secara administratif San Narciso terbagi menjadi 24 barangay, yaitu: Abuyon Andres Bonifacio Bani Binay Buenavista Busokbusokan Calwit Guinhalinan Lakdayan Maguiting Manlampong Pagkakaisa (Pob.) Maligaya (Pob.) Bayanihan (Pob.) Pagdadamayan (Pob.) Punta Rizal San Isi...

 

Charles-Henri DambrayGravure de DambrayFonctionsGarde des Sceaux, ministre de la Justice7 mai 1816 - 19 janvier 1817François Barbé-MarboisÉtienne-Denis PasquierAcadémicienAcadémie des inscriptions et belles-lettres1816-1829Agricol-Joseph Fortia d'UrbanPrésident de la Chambre des pairs4 juin 1814 - 13 décembre 1829Garde des Sceaux, ministre de la Justice13 mai 1814 - 20 mars 1815Pierre Paul Nicolas Henrion de PanseyJean-Jacques-Régis de CambacérèsChancelier de France13 mai 1814 - 13 ...

 

P. ParameswaranLahir1927Thamarasseril Illam, Cherthala, Kerala, India BritaniaKebangsaanIndiaWarga negaraIndiaPendidikanB.A. History, University College Trivandrum Predegree, St. Berchmans College ChanganacherryDikenal atasPemikir Hindutva Rashtriya Swayamsevak Sangh Pracharak direktur Bharatiya Vichara Kendrapresiden Vivekananda KendraPenghargaanPadma Vibhushan 2018 Padma Shri 2004 Amritha Keerti Puraskar 2002Situs webhttp://www.vicharakendram.org/index.htm P. Parameswaran (sering disebut P...

Samsung Galaxy Mini (GT-S5570) (Next in Italia)Candybar ProduttoreSamsung SerieSamsung Galaxy Presentazionefebbraio 2011 PredecessoreSamsung Corby GT-i5500 SuccessoreGalaxy Mini 2 ComunicazioneRetiHSDPA 7,2 Mbps 900/2100, EDGE/GPRS 850/900/1800/1900 ConnettivitàWiFi 802.11 (b/g/n), Bluetooth v 2.1 (3.0 il modello Turbo), USB 2.0 (High Speed) SoftwareSistema operativoAndroid 2.3.6 Gingerbread MultimediaAudio MP3, AAC, AAC+, eAAC+Presa cuffie 3.5mmRadio FM con RDS FotocamerePosteriore3,14...

 

Location of Lapeer County in Michigan Map all coordinates using OpenStreetMap Download coordinates as: KML GPX (all coordinates) GPX (primary coordinates) GPX (secondary coordinates) The following is a list of National Register of Historic Places listings in Lapeer County, Michigan. Lapeer County was founded in 1822 and has a current estimated population of almost 90,000. It is officially listed as part of Metro Detroit with Lapeer as a county seat. The county currently contains 24 propertie...

 

علم الاجتماع الاقتصاديصنف فرعي من علم الاجتماع — اقتصاد يمتهنه economic sociologist (en) تعديل - تعديل مصدري - تعديل ويكي بيانات جزء من سلسلة مقالات حولعلم الاجتماع تاريخ فهرس المواضيع الرئيسية مجتمع عولمة سلوك الإنسان تأثير الإنسان على البيئة هوية الثورات الصناعية 3 / 4 / 5 تعقيد اجتما...

本條目存在以下問題,請協助改善本條目或在討論頁針對議題發表看法。 此條目需要編修,以確保文法、用詞、语气、格式、標點等使用恰当。 (2013年8月6日)請按照校對指引,幫助编辑這個條目。(幫助、討論) 此條目剧情、虛構用語或人物介紹过长过细,需清理无关故事主轴的细节、用語和角色介紹。 (2020年10月6日)劇情、用語和人物介紹都只是用於了解故事主軸,輔助�...

 

Private school in Montreal, Quebec, CanadaCollège de MontréalAddress1931, Sherbrooke Street WestMontreal, QuebecCanadaCoordinates45°29′39″N 73°35′08″W / 45.4941°N 73.5855°W / 45.4941; -73.5855InformationSchool typePrivateReligious affiliation(s)Roman CatholicEstablished1767; 257 years ago (1767)Director Gen.Patrica StebenGrades7–11Enrollment+1500LanguageFrenchWebsitehttp://www.college-montreal.qc.ca College de Montréal, Collège Stree...

 

Pour les articles homonymes, voir Yves Michaud et Michaud. Yves MichaudFonctionDirecteurÉcole nationale supérieure des beaux-arts1989-1997BiographieNaissance 11 juillet 1944 (79 ans)4e arrondissement de LyonNationalité françaiseFormation Université Paris-I-Panthéon-Sorbonne (doctorat) (jusqu'en 1981)École normale supérieureActivités Philosophe, professeur d'université, historien de la philosophie, philosophe de l'esthétiqueAutres informationsA travaillé pour Université Pari...

Swiss German-language daily newspaper 47°23′17″N 8°31′16″E / 47.388°N 8.521°E / 47.388; 8.521 Neue Zürcher ZeitungTypeDaily newspaperFormatSwissOwner(s)NZZ MediengruppeFounder(s)Salomon GessnerPresidentFelix GrafEditor-in-chiefEric GujerFounded12 January 1780; 244 years ago (1780-01-12)Political alignmentClassical liberalismLiberal democracyLanguageGermanHeadquartersZürich, SwitzerlandCirculation108,709(including e-paper, 2014)Readership...

 

Борис Миколайович Лятошинський Борис Миколайович ЛятошинськийІм'я при народженні Борис Миколайович ЛятошинськийНародився 22 листопада (4 грудня) 1894[4][5]Житомир, Російська імперія[1]Помер 15 квітня 1968(1968-04-15)[1][2][…] (73 роки)Київ, Українська РСР, СРСР[1]...

 

Member of the Dutch royal family Prince CarlosDuke of Parma and PiacenzaPrince de Bourbon de ParmePrince Carlos, Duke of Parma, in 2017Head of the House of Bourbon-ParmaTenure18 August 2010 – presentPredecessorPrince Carlos HugoHeir ApparentPrince Carlos EnriqueBorn (1970-01-27) 27 January 1970 (age 54)Nijmegen, NetherlandsSpouse Annemarie Gualthérie van Weezel ​ ​(m. 2010)​IssueDetailPrince Hugo de Bourbon de Parme(illegitimate)Princess Luisa, March...

Daftar keuskupan di Uruguay adalah sebuah daftar yang memuat dan menjabarkan pembagian terhadap wilayah administratif Gereja Katolik Roma yang dipimpin oleh seorang uskup ataupun ordinaris di Uruguay. Konferensi para uskup Uruguay bergabung dalam Konferensi Waligereja Uruguay. Per Juni 2020, terdapat 10 buah yurisdiksi, di mana 1 merupakan keuskupan agung dan 8 merupakan keuskupan sufragan. Terdapat juga 1 buah eksarkat apostolik. Daftar keuskupan Provinsi Gerejawi Montevideo Keuskupan Agung ...

 

اضغط هنا للاطلاع على كيفية قراءة التصنيف الدميانة الدميانة المرتبة التصنيفية نوع  التصنيف العلمي المملكة: النبات القسم: مغطاة البذور الطائفة: ثنائيات الفلقة الرتبة: ملبيغيات الفصيلة: آلامية الجنس: زداع النوع: T. diffusa الاسم العلمي Turnera diffusa Willd. ex J.A. Schultes معرض صور دميانة  ...

 

37th Division30th DivisionThe divisional insignia used by the division from July 1918 onwards. It depicts the personal crest of Edward Stanley, 17th Earl of Derby.[1]Active1915 – September 1919Country United KingdomBranch British ArmyTypeInfantryEngagementsFirst World War Battle of the Somme (1916) Battle of Albert (1916) Military unit The British 30th Division was a New Army division that was originally made up of battalions raised by public subscription or private patro...

Mosque in Istanbul, Turkey Pantokrator Monastery redirects here. For the monastery at Mount Athos, see Pantokratoros Monastery. Zeyrek Mosque Greek: Μονή του Παντοκράτορος Χριστού Turkish: Zeyrek CamiiThe mosque viewed from north east. From left to right, one can see the apses of the Church of Christ Pantocrator, the Imperial Chapel and the Church of the Theotokos Eleousa.ReligionAffiliationSunni IslamYear consecratedShortly after 1453LocationLocationIstanbul, Turke...

 

Voce principale: Bologna Football Club 1909. Bologna FCStagione 1987-1988La squadra felsinea posa con il presidente Gino Corioni e il tifoso Alberto Tomba Sport calcio Squadra Bologna Allenatore Luigi Maifredi All. in seconda Gino Pivatelli Presidente Gino Corioni Serie B1º (promosso in Serie A) Coppa ItaliaOttavi di finale Maggiori presenzeCampionato: Marocchi, Marronaro, Villa (37)Totale: Marronaro, Villa (44) Miglior marcatoreCampionato: Marronaro (21) StadioRenato Dall'Ara 1986-198...