Re: OT: ioperm()
Hallo zusammen,
ich habe die Mails nicht von Anfang an mitbekommen, aber vielleicht ist es ja
das was du suchst:
> > Mittels "ioperm" schalte ich den Zugriff frei, was jedoch nur als
> > ROOT moeglich ist.
> > Was muss ich machen, dass ich den "ioperm" auch als normaler User nutzen
> > kann?
--- Externes Programm lptout/lptout.c -> Wert auf LPT-Port ausgeben ---
// Kompilieren: gcc -O2 -o lptin lptin.c
// Programm braucht set uid Bit
// Aufruf in C/C++ mit: system(lptout 888,int AusgabeWert);
#include <asm/io.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int base=atoi(argv[1]); // Basisadresse des LPT-Ports (888%=LPT1=378hex)
int value=atoi(argv[2]); // Ausgabewert, Bitmuster
if(base!=888)exit(1); // Sicherheitsabfrage(n)
ioperm(base,3,1); // Zugriff auf die drei (zweiter Parameter) LPT_Adressen
// BasisAdresse_(erster Parameter) = Datenregister
// BasisAdresse+1 = Statusregister
// BasisAdresse+2 = CtrlRegister
// des LPT-Ports erlauben=1 (dritter Parameter)
outb(value,base); //Bitmuster ausgeben
outb(1,base+2); //Fallende Flanke in CtrlRegister erzeugen; dadurch
wird Byte geschrieben
outb(0,base+2);
ioperm(base,3,0); //Zugriff auf die Portadressen wieder
verbieten
};
Ich hätte auch noch ein Beispiel für LPT-Einlesen.
Gruß Ulrich
Reply to: