Re: Kerneltreiber

From: Titus von Boxberg <tboxberg(at)schuett-elektronik.de>
Date: Tue, 15 Aug 2000 10:17:13 +0100

Greg Lehey wrote:
> > Wo landet fcntl(NBLOCK) im treiber? (das wollte ich ursprünglich
> > fragen :)
>
> fcnt (fd, F_SETFL, O_NONBLOCK | O_RWDR)
>
> oder ähnliches. Die Flags selbst sind in der struct file. Von
> sys/kern_descrip.c:
.....
> error = fo_ioctl(fp, FIONBIO, (caddr_t)&tmp, p);
>
??
> Vermutlich willst Du wissen, wie der Treiber heran kommt. Das weiß
> ich nicht, allerdings weiß ich auch nicht, wozu man das im Treiber
> wissen sollte.
???
vielleicht habe ich ja fundamental etwas nicht begriffen.
irgendjemand im kernel muß ja mal entscheiden, daß EWOULDBLOCK
zurückgegeben wird, wenn keine daten zum lesen da sind bzw.
die sende/schreibpuffer voll sind.
das möchte ja wohl in ultimativer instanz ein treiber sein,
der diese pufferung vornimmt, zumindest genau dann, wenn
keine verarbeitung zwischen read()/write() des user-prozesses
und dem read/write() im treiber liegt. und GENAU das ist es,
was ich will, also kein tty, kein Filesystem etc.pp.
ich brauch den treiber NUR, weil ich ein stück software brauche,
das inb/outb machen und mit interrupts rumfummeln kann.
und das ist bei UNIX halt glücklicherweise ein stück software
im ring 0 oder wie immer hier der supervisor-modus heißt.
daher meine fragen.

Danke,
TITUS

To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 15 Aug 2000 - 10:09:57 CEST

search this site