Avanti Indietro Indice

9. Codice d'esempio

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


Avanti Indietro Indice