Date: Fri, 4 Aug 1995 09:59:17 +0600 (GMT+0600) From: "Serge A. Babkin" <babkin@hq.icb.chel.su> To: erich@lodgenet.com (Eric L. Hernes) Cc: terry@cs.weber.edu, doc@freebsd.org Subject: Re: device driver writers guide Message-ID: <199508040359.JAA16955@hq.icb.chel.su> In-Reply-To: <199508031523.KAA10229@jake.lodgenet.com> from "Eric L. Hernes" at Aug 3, 95 10:23:38 am
next in thread | previous in thread | raw e-mail | index | archive | help
> > > > I would be *very* interested in one of these existing. > > > > One of the issues in BSD is lack of documentation for internal > > system interfaces. VM would be a good place to start, as would > > vn_ for kernel level file I/O and bXXX, the block I/O interface. > > > > Yea, but lack of documentation is a problem for all unixes. > Sco, even though you can pay for a device driver class, and > they have man pages for kernel support routines, still > is about 80% of what I would have liked. (that is still > much better than FreeBSD, though) > > I'm much more familiar with the drivers and entry points, and > that type of stuff. The details VM has always been a big > mystery for me. There is a good (but old :-( ) book by Egan and Texeira "Writing a Unix device driver" (if I have remembered it right). This is a book for beginners, but it's full and its skeleton can be used for the Device driver writer's guide. I think it can be used as an example "how it should be done and what it should content" too (but obviously the contents will be more modern, like your ouline). > > My outline is as follows: > > I. Linking a driver into the kernel > > A. Standard Device Driver > B. Loadable Kernel Modules (LKM's) > > II. FreeBSD Entry Points > > A. Required Data Structures > 1. isa_device > 2. isa_driver > 3. ... > > B. Required Entry Points > 1. XXprobe() > 2. XXattach() > 3. XXopen() > 4. XXclose() > > C. Optional Entry Points > > 1. Device Switch Entry Points > > a. XXread() > b. XXwrite() > c. XXioctl() > d. XXdevtotty() > e. XXstart() > f. XXstop() > g. XXreset() > h. XXstrategy() > > D. Interrupt type Entry Points > > a. XXintr() > b. XXpoll() > > III. Kernel Support Routines Serge Babkin ! (babkin@hq.icb.chel.su) ! Headquarter of Joint Stock Commercial Bank "Chelindbank" ! Chelyabinsk, Russia
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199508040359.JAA16955>