outb, outw, outl, outsb, outsw, outsl, inb, inw, inl, insb, insw, insl, outb_p,
outw_p, outl_p, inb_p, inw_p, inl_p - Lire/Écrire sur un port
Bibliothèque C standard (
libc,
-lc)
#include <sys/io.h>
unsigned char inb(unsigned short port);
unsigned char inb_p(unsigned short port);
unsigned short inw(unsigned short port);
unsigned short inw_p(unsigned short port);
unsigned int inl(unsigned short port);
unsigned int inl_p(unsigned short port);
void outb(unsigned char value, unsigned short port);
void outb_p(unsigned char value, unsigned short port);
void outw(unsigned short value, unsigned short port);
void outw_p(unsigned short value, unsigned short port);
void outl(unsigned int value, unsigned short port);
void outl_p(unsigned int value, unsigned short port);
void insb(unsigned short port, void addr[.count],
unsigned long count);
void insw(unsigned short port, void addr[.count],
unsigned long count);
void insl(unsigned short port, void addr[.count],
unsigned long count);
void outsb(unsigned short port, const void addr[.count],
unsigned long count);
void outsw(unsigned short port, const void addr[.count],
unsigned long count);
void outsl(unsigned short port, const void addr[.count],
unsigned long count);
Cette famille de fonctions est utilisée pour des entrées-sorties
de bas niveau. Les fonctions out* effectuent une écriture sur un port
alors que les fonctions in* effectuent une lecture. Les fonctions
suffixées avec « b » travaillent sur des
octets alors que les fonctions suffixées avec
« w » travaillent sur des mots. Les fonctions
suffixées avec « _p » attendent que les
entrées-sorties soient achevées.
Elles ont principalement été conçues pour un usage interne
au noyau, mais sont quand même utilisables avec des processus
utilisateurs.
Le programme doit être compilé avec les options
-O ou
-O2 ou équivalent. Ces fonctions sont en réalité
des macros développées en ligne, et ne seront pas
substituées sans valider l'optimisation. Cela causerait des erreurs de
références non résolues au moment de l'édition des
liens.
Utiliser
ioperm(2) ou éventuellement
iopl(2) pour demander
au noyau d'autoriser l'application à accéder aux ports
d'entrées-sorties en question. Une omission de cette étape
déclencherait une faute de segmentation.
outb() et les autres fonctions dépendent du matériel. Les
arguments
port et
valeur sont dans l'ordre inverse de la plupart
des implémentations équivalentes sous DOS.
ioperm(2),
iopl(2)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]> et
Jean-Philippe MENGUAL <
[email protected]>
Cette traduction est une documentation libre ; veuillez vous reporter
à la
GNU
General Public License version 3 concernant les conditions de copie
et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
[email protected]