Date: Mon, 24 Jan 2000 14:27:39 +0100 From: Jeroen Ruigrok/Asmodai <asmodai@wxs.nl> To: "Daniel C. Sobral" <dcs@newsguy.com> Cc: Bill Maniatty <maniattb@cs.rpi.edu>, FreeBSD-doc@FreeBSD.ORG, maniatty@cs.albany.edu, freebsd-hackers@FreeBSD.ORG, Greg Lehey <grog@lemis.com> Subject: Re: Learning the FreeBSD Kernel Message-ID: <20000124142738.B691@daemon.ninth-circle.org> In-Reply-To: <388C0FED.706330D0@newsguy.com>; from dcs@newsguy.com on Mon, Jan 24, 2000 at 05:40:13PM %2B0900 References: <200001231648.LAA53658@cs.rpi.edu> <388C0FED.706330D0@newsguy.com>
next in thread | previous in thread | raw e-mail | index | archive | help
-On [20000124 10:13], Daniel C. Sobral (dcs@newsguy.com) wrote: >Bill Maniatty wrote: >> >> First we want to get the mechanism of driver installation down, then >> try our hands at writing our own driver. I fear that if we roll our own >> driver software we may find that if we have errors (not that we ever have >> errors mind you :-) we may not be able to isolate the cause. This is >> why I was leaning towards reinstalling a working driver first. > >You won't have any trouble at all with basic driver installation. In >fact, this is driver skeleton, that can be templated (and used to... but >I don't know if we have newbus templates or not). man 9 driver. >Notice that most developers use kld to develop their drivers. Not having >to recompile the kernel and reboot really helps. :-) There exists one >tutorial-style guide to writing kld's. It's a "hacking" guide to the use >of kld's as a way to introduce back-doors in FreeBSD, and though it's >somewhat "unclean" wrt to interface description, it's an effective >tutorial. I'm sure it can be found from FreeBSD's web site. Trust me, writing modules is the _least_ of your worries. If I can write a module then every^H^H^H^H^Hcluefull people can. =) /usr/src/sys/modules >As a next step, I suggest writing "virtual" drivers, not bound to any >hardware. There are many such drivers in the tree. As a trivial example, >and a favorite of many, the screen savers. > >The above will get you proficient with the basics of writing device >drivers, but still leave a lot out. Let's see... [Not looking at the source code for those I dare say:] But they are not using any busspace/newbus functionality for all I know. And cannot be compared to the `real' drivers IMHO. >> How mature is the USB driver technology? If it is pretty preliminary >> we may wish to visit that later. Please recall that we are on a learning >> curve here. > >If we support ethernet cards on USB, I'd say it's pretty mature. :-) > >Anyway, here is what virtual drivers won't teach: how to get resources, >which will vary from bus to bus, how to interact with some of the kernel >subsystems... How does one write a tun device? How does one write a >network device? How does one write a network protocol? How does one >write a CAM device (more than one type exist -- some virtual and some >not)? How does one write a bus device? When to write a bus (newpcm uses >a bus of it's own, if I'm not mistaken)? If you refer to pcm attaching to sbc or gusc. But those are pseudo busses if I understood everything correctly, the same goes for miibus and related busses (ppbus, smbus, iicbus). >These problems are mostly distinct from each other, and their usefulness >varies. Certainly, a tutorial covering newbus and the main bus types >(usb, isa, pci) would be useful and not too difficult to write. CardBus >and PCMCIA would be very useful, but we'll have to finish that first >:-). Ehm, a tutorial covering the bus types. You have no idea how much you can write about ISA and PCI alone. >But it gets complicated from there on. Writing a tutorial on even a >subsection of CAM would be very time-consuming. Write a reference so that we can finally convert the last drivers to CAM/newbus. =) >Julian had a device skeleton generator way back, I don't know if there >is a newbus equivalent or not. I think Peter [Wemm] wrote a skeleton one. >Documenting the available debugging tools and useful debugging >techniques would be mostly welcome. Aside from "how do I use the kernel >debugger", use of tools such as truss, and loading symbol tables to >kld's (see Greg Lehey's documentation on debugging vinum) would be >useful tutorials. Yeah yeah, coming up. Stop whining. ;) Hey, wait a sec, you said yesterday that you were bored. Nice task for you DCS ;) -- Jeroen Ruigrok vd W/Asmodai asmodai@[wxs.nl|bart.nl|freebsd.org] Documentation nutter/B-rated Coder BSD: Technical excellence at its best The BSD Programmer's Documentation Project <http://home.wxs.nl/~asmodai> Ain't gonna spend the rest of my Life, quietly fading away... To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20000124142738.B691>