Ecco un esempio di codice per l'accesso alla porta I/O:
/*
* example.c: un semplicissimo esempio di I/O su porta
*
* Questo codice non fa nulla di utile, solo una scrittura sulla
* porta, una pausa e una lettura dalla porta. Compilarlo con
* `gcc -O2 -o example example.c' ed eseguitelo da root con "./example".
*/
#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>
#define BASEPORT 0x378 /* lp1 */
int main()
{
/* Richiede l'accesso alle porte */
if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}
/* Imposta bassi (0) i segnali di dati (D0-7) della porta */
outb(0, BASEPORT);
/* Va in pausa (dorme) per un pò (100 ms) */
usleep(100000);
/* Legge dalla porta lo stato (BASE+1) e mostra il risultato */
printf("stato: %d\n", inb(BASEPORT + 1));
/* La porta non serve più */
if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}
exit(0);
}
/* fine dell'esempio example.c */