Re: ioctl-Defines fuer Kernel-Treiber

From: J Wunsch <j(at)uriah.heep.sax.de>
Date: Tue, 14 Nov 2000 08:33:47 +0100

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 message
Received on Tue 14 Nov 2000 - 08:50:40 CET

search this site