Następna strona Poprzednia strona Spis treści

9. Przykładowy program

Oto kawałek prostego przykładowego programu demonstrującego dostęp do rejestrów I/O.


/*
 * example.c: bardzo prosty przykład dostępu do portów I/O
 *
 * Program ten nie robi nic użytecznego, zapisuje do portu, czeka i
 * odczytuje z portu. Kompilacja: gcc -O2 -o example example.c
 * Uruchamiac jako ./example będąc root'em
/ 

#include <stdio.h>
#include <unistd.h>
#include <asm/io.h>

#define BASEPORT 0x378 /* lp1 */

int main()
{
  /* Uzyskaj dostęp do portów */
  if (ioperm(BASEPORT, 3, 1)) {perror("ioperm"); exit(1);}
  
  /* Ustaw wszystkie bity danych (D0-D7) w stan niski (0) */
  outb(0, BASEPORT);
  
  /* Zaczekaj chwilkę (100 ms) */
  usleep(100000);
  
  /* Odczytaj z rejestru statusowego (BASE+1) i wyświetl rezultat */
  printf("status: %d\n", inb(BASEPORT + 1));

  /* Już nie potrzebujemy portów */
  if (ioperm(BASEPORT, 3, 0)) {perror("ioperm"); exit(1);}

  exit(0);
}
/* koniec example.c */


Następna strona Poprzednia strona Spis treści