Subject: Kernel device driver
To: None <port-alpha@netbsd.org>
From: Paul Mather <paul@gromit.dlib.vt.edu>
List: port-alpha
Date: 09/12/2000 16:34:21
I apologise in advance that this is probably not the best place to post
this, but I know there are a number of kernel hackers on port-alpha,
and, at the very least, they can tell me a better place to seek a
solution.

I need to develop a kernel device driver---something akin to the vnd
pseudo device, but that works over a TCP/IP socket, instead of with a
local file.  The remote end of the socket is some custom API (over which
I have no control) acting as a front-end for some custom storage bricks 
(again, over which I have no control).  The object of the driver is to
provide a block-device abstraction on which filesystems may be created
(a la vnd, raid).

My dilemma is this: what is the best platform under which to develop
such a device driver?  I have a personal fondness for NetBSD (I run
NetBSD/{alpha,pmax} at home, so you know where my biases lie), but I
notice there appears to be a dearth of information about kernel
developing for NetBSD.  Well, a dearth compared to Linux, at any
rate.  Looking for information, I found lots of tutorials and
information for Linux kernel development, and there seem to be lots of
file systems out there in the field, including a "network block
device," which appears similar to what I need (just have to retool the
other end).

My boss naturally gravitated towards Linux from the get-go (being the
higher profile OS in the public eye), but the ultimate decision is mine.  
However, I need to be able to justify it.  Although I prefer NetBSD, my
gut feeling is that I would have an easier time developing under Linux
because of the greater availability of support material.  (For BSD, I
have the red BSD4.4 book, and that's about it.)  Also, there are some
folks locally with kernel filesystem development experience under Linux,
so they'd be a handy local resource.

I have no prior hands-on kernel developing experience, so I'm looking
for something with the easiest learning curve, but which ultimately
yields a good end result.  (The multi-platform aspect of NetBSD is a big
plus in its favour, IMHO!)

So, can I get some honest advice, here?  E-mail me privately, if you
prefer.  I don't want this to become an OS advocacy flame-fest.  Like I
said, my heart belongs to NetBSD... :-)

(Also, if anyone knows of NetBSD kernel development resources, let me
know of those, too!)

Cheers,

Paul.

e-mail: paul@gromit.dlib.vt.edu

"Without music to decorate it, time is just a bunch of boring production
 deadlines or dates by which bills must be paid."
        --- Frank Vincent Zappa