Newbie Question to Device driver writing

Jonathan Herriott herriojr at gmail.com
Thu Aug 17 17:30:09 UTC 2006


Intron-

Unfortunately, I have nothing specific in mind as all my hardware
works on FreeBSD.  I've almost come to the point where I'm going to go
to Fry's and buy a bunch of stuff and make a simple USB device which
may turn on or off a light (actually hook it up to a light in my home)
just to get some experience with writing drivers.

Overall, I'd really love to do an opengl driver for a graphics card,
but I figured before I get into something that complex, I might try
something simpler.  Any suggestion would be great.

I'll look into -hackers@ as I would really like to learn the actual
internals of FreeBSD.

Jon


On 8/17/06, Intron is my alias on the Internet <mag at intron.ac> wrote:
> Jonathan Herriott wrote:
>
> > Hi!
> >
> > I've been interested in learning how to write device drivers for quite
> > some time, but I had never had the time to devote to it until now.
> >
> > I was reading through the FreeBSD architecture handbook and came
> > across the example echo character driver.  To make sure I understand
> > all that's going on, I'm searching though all the header files to
> > understand what each thing is such as the cdevsw structure and cdev
> > structure.
> >
> > I've come to the conclusion that the cdev structure is what is used to
> > store the information about the actual device I open with make_dev.  I
> > was wondering if there is a place in which I can find a good
> > explanation of the different attributes of the structure.  The header
> > files don't provide much insight for a newbie, so I was wondering if
> > there might be some other location.
> >
> > On a side note, is there a good irc channel for FreeBSD driver writing
> > discussion?
> >
> > Thanks in advance!
> >
> > Jon
> > _______________________________________________
> > freebsd-drivers at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-drivers
> > To unsubscribe, send any mail to "freebsd-drivers-unsubscribe at freebsd.org"
>
> In my opinion, any hardware driver has two interfaces, one user side
> interface and one kernel side interface.
>
> User side interface is created by make_dev(9). The structure cdevsw
> mainly contains a table of operations upon this device (i.e. "method"
> in object-oriented model) and permission of the device file node
> to be created under /dev/. We are familiar with the operations for
> read(2), write(2) and so on, but "strategy", "dump", "kqfilter" and others
> are relatively strange to us.
>
> Kernel side interface is used to access PCI bus, USB and other hardware
> resource, and to obtain memory space, shared/exclusive lock and module
> management support and other function sets.
>
> To be honest, you need to hack FreeBSD source code yourself if you
> would master FreeBSD kernel really.
>
> The mailing list -drivers@ lacks discussants. And you may send your
> question to -hackers at .
>
> What driver would you contribute to FreeBSD?
> I have interests to contribute something concerning hardware to FreeBSD.
>
> ------------------------------------------------------------------------
>                                                 From Beijing, China
>
>


More information about the freebsd-drivers mailing list