Voici un exemple de programme simple permettant l'accès aux ports d'entrées / sorties :
/* * exemple.c : un exemple très simple d'accès aux ports d'E/S * * Ce programme ne fait rien d'utile, juste une écriture sur le port, * une pause, puis une lecture sur le même port. * À compiler avec « gcc -O2 -o exemple exemple.c »et à * exécuter en tant que root avec « ./exemple ». */ #include <stdio.h> #include <unistd.h> #include <asm/io.h> #define BASEPORT 0x378 /* lp1 */ int main() { /* Obtention de l'accès aux ports */ if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);} /* Initialisation de tous les signaux de données (D0-D7) à l'état bas (0) */ outb(0, BASEPORT); /* Dormons pendant un moment (100 ms) */ usleep(100000); /* Lecture sur le port d'état (BASE+1) et affichage du résultat */ printf("status : %d\n", inb(BASEPORT + 1)); /* Nous n'avons plus besoin de l'accès aux ports */ if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);} exit(0); } /* fin d'exemple.c */ |