As Titus von Boxberg wrote:
> Also präziser:
> - wo sind _IOxx definiert?
grep(1) is your friend:;
% grep 'define[ ]*_IO' /sys/sys/*.h
/sys/sys/ioccom.h:#define _IOC(inout,group,num,len) \
/sys/sys/ioccom.h:#define _IO(g,n) _IOC(IOC_VOID, (g), (n), 0)
/sys/sys/ioccom.h:#define _IOR(g,n,t) _IOC(IOC_OUT, (g), (n), sizeof(t))
/sys/sys/ioccom.h:#define _IOW(g,n,t) _IOC(IOC_IN, (g), (n), sizeof(t))
/sys/sys/ioccom.h:#define _IOWR(g,n,t) _IOC(IOC_INOUT, (g), (n), sizeof(t))
> - was ist das erste argument dieses makros?
Eine wahllos ausgesuchte 8-Bit-Zahl (typischerweise als
ASCII-Zeichen), die man sich für seinen eigenen Treiber aus den
Fingern saugt. Alle Ziffern und Buchstaben sind sowieso schon mal
irgendwo benutzt, man nimmt also typischerweise irgendwas, was
mnemonisch an den Treiber erinnert (die tty-ioctls zum Beispiel nehmen
deshalb ein `t'). Das zweite Argument ist auch wahllos ausgesucht und
wird innerhalb des eigenen Treibers dann hochgezählt (oder
andwerweitig eindeutig benutzt). Zum Glück codiert BSD noch die
Richtung und Länge der Parameter in den endgültigen 32-bit-Code.
-- cheers, J"org .-.-. --... ...-- -.. . DL8DTL http://www.sax.de/~joerg/ NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Tue 14 Nov 2000 - 08:50:40 CET