Peter,
I got my copy of the NT insider today, and I read your “pontificates”
article with a great deal of interest. I have two thoughts on this…
-
I have always thought that there should be some “intermediate” level of
drivers, where non-essential (yet non user-mode) code should reside. It
always bothered me that in X86-land, only two levels of hardware protection
were used: ring-3 and ring-0. What about rings 1 & 2? Why all-or-nothing?
I realize that originally the common code base was meant to support
different types of processors (MIPS, PowerPC, Alpha, X86), but that’s all
pretty much history now (ia64 excepted), and I venture to guess that 96% of
the installed 2000/XP platforms are/will-be X86-based anyway (why else did
Compaq drop support for the Alpha?). Why not let the hardware share some of
the burden as well? -
You are absolutely right - a lot of the pseudo-driver code does need to
be kicked out of kernel-mode space. Please understand where I’m coming
from. I don’t write KMDs for a living. Roughly 85% of the code I write is
user-mode. I chose the NT platform for it’s stability, not it’s speed. But
I was forced into learning and writing KMDs because I had to support my
company’s legacy I/O acquisition cards, cards that only needed simple port
I/O and interrupt capability. I’ll bet there are a lot of other devices out
there that fall into this category, the category of non-essential, yet
hardware-driven. The pressures of market demands and company deadlines
makes *REALLY* learning kernel mode drivers difficult and expensive. I’m
willing to bet that there are very few people out there that have your level
of expertise in device driver writing. Most people just want to be able to
get at their hardware, and thus they learn the bare minimum to get the job
done. Are these those kinds of device drivers you want to give free-reign,
to put on an equal footing with the OS? I don’t think so…
How many times have you seen somebody post a question like “how do I share
memory between my user-mode app and my driver?” - chances are, the poor soul
was just trying to talk to his simple hardware - he wasn’t trying to write a
file-system or network driver. There really SHOULD be a sandbox for these
types of drivers. Maybe someday there will.
Writing your article was a great start toward this effort. You’ve got my
100% support.
Regards,
Bill Christie, Software Engineer
Link Engineering Company
43855 Plymouth Oaks Blvd.
Plymouth, MI 48170
www.linkeng.com
You are currently subscribed to ntdev as: $subst(‘Recip.EmailAddr’)
To unsubscribe send a blank email to leave-ntdev-$subst(‘Recip.MemberIDChar’)@lists.osr.com