From owner-freebsd-drivers@FreeBSD.ORG Thu Aug 17 10:55:12 2006 Return-Path: X-Original-To: freebsd-drivers@freebsd.org Delivered-To: freebsd-drivers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 99A6116A4DE for ; Thu, 17 Aug 2006 10:55:12 +0000 (UTC) (envelope-from admin@intron.ac) Received: from intron.ac (unknown [210.51.165.237]) by mx1.FreeBSD.org (Postfix) with ESMTP id 10FAC43D45 for ; Thu, 17 Aug 2006 10:55:10 +0000 (GMT) (envelope-from admin@intron.ac) Received: from localhost (localhost [127.0.0.1]) (uid 1003) by intron.ac with local; Thu, 17 Aug 2006 18:55:05 +0800 id 00102C05.44E44B09.00015C21 References: <6a56d69c0608162129h9e3e085i4ad1f4034833724f@mail.gmail.com> In-Reply-To: <6a56d69c0608162129h9e3e085i4ad1f4034833724f@mail.gmail.com> From: "Intron is my alias on the Internet" To: "Jonathan Herriott" Date: Thu, 17 Aug 2006 18:55:05 +0800 Mime-Version: 1.0 Content-Type: text/plain; charset="gb2312"; format=flowed Content-Transfer-Encoding: 7bit Message-ID: Cc: freebsd-drivers@freebsd.org Subject: Re: Newbie Question to Device driver writing X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 17 Aug 2006 10:55:12 -0000 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@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-drivers > To unsubscribe, send any mail to "freebsd-drivers-unsubscribe@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@. What driver would you contribute to FreeBSD? I have interests to contribute something concerning hardware to FreeBSD. ------------------------------------------------------------------------ From Beijing, China