\section{Assumptions}

To read \kguide, you should have a reasonably good understanding of C.
That is, you should be able to read C code without having to look up
everything.  You should be able to write simple C programs, and
understand {\tt struct}'s, pointers, macros, and ANSI C prototyping.
You do not have to have a thorough knowledge of the standard I/O
library, because the standard libraries are not available in the
kernel.  Some of the more often used standard I/O functions have been
rewritten for use within the kernel, but these are explained in this
book where necessary.

You should be able to use a good text editor, recompile the \linux\
kernel, and do basic system administration tasks, such as making new
device entries in /dev/.

You should also be able to read, as I do not offer support for this
book\dots
\begin{quotation}\noindent
``{\em Hello, sir, I'm having some problems with this book you wrote.}''\\
``Yes?''\\
``{\em I can't read it.}''\\
``Is it plugged in?''\\
``{\em Yes.  I also tried a lamp in that socket, so I know it is getting
power.  But I really don't think that's the problem.}''\\
``Why not?''\\
``{\em I can't read.}''\\
`` Oh.  Well, let's start here.  See this?  Repeat after me: {\em
The cat sat on the rat\dots}''
\end{quotation}