in/out na porty rucne?
David Šauer
davids na orfinet.cz
Neděle Červen 6 20:41:24 CEST 1999
>>>> "PS" == Petr Soucek <petr na ryston.cz> writes:
>> Ale asi to predpoklada, ze bude mit napsanou funkci muj_inb, treba
>> pomoci makra inb. (#include <asm/io.h> nutne).
PS> No prave tomu jsem se chtel vyhnout...
Jasne, ale problem je v tom, ze linux je prenositelny, tedy funguje i na
architekturach, ktere zadne in/out nemaji. Jak slozite(?) muze byt napsani
programu stylu:
#include <sys/io.h>
#include <stdio.h>
#include <stdlib.h>
int
my_in (int port)
{
return inb (port);
}
void
my_out (int port, int value)
{
outb (value, port);
return;
}
int
main ()
{
char povel;
int port, hodnota;
char s[100];
// tady povolit, jen co vas zajima ...
if (ioperm (0, 0x3ff, 1))
exit (2);
while (1)
{
int i;
fgets(s, 99, stdin);
i = sscanf (s, "%c %i,%i", &povel, &port, &hodnota);
if (i == 0) continue;
if ((i == 1) && (povel == 'q')) break;
if ((i == 2) && (povel == 'i'))
{
printf ("%d\n", my_in (port));
continue;
}
if ((i == 3) && (povel == 'o'))
{
my_out (port, hodnota);
continue;
}
fprintf (stderr, "Chyba\n");
}
}
tento programek lze pouzit primo nebo pomoci gdb.
Jo jeste: preklad: egcs -O2 -o <vystup> <zdrojak>.
A upozorneni: nezkousel jsem to naostro a je to pod GNU ... tedy bez zaruky
...
--
* David Sauer, student of Czech Technical University
* electronic mail: davids na orfinet.cz (mime compatible)
Další informace o konferenci Linux