9. Code d'exemple

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 */