<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<book><bookinfo>
<title>The Linux Kernel Hacker's Encyclopedia</title>
<authorgroup>

<author>
  <firstname>Michael</firstname>
  <surname>Still</surname>
</author>
</authorgroup>
</bookinfo>

<chapter id="chapter-a"><title>a</title>
<para>
...
</para>

<sect1><title>APM</title>
<sect2><title>Acronym definition</title>
<para>
Advanced Power Management
</para>

<sect2><title>Definition</title>
<para>
Advanced Power Management is 
</para>

<para>
The code was originally contributed by <emphasis>Stephen Rothwell</emphasis> having been funded by <emphasis>NEC</emphasis> Australia. It is currently maintained by <emphasis>Avery Pennarun</emphasis>, having also been maintained by <emphasis>Rik Faith</emphasis> in the past. The code is licensed under the terms of the GNU GPL version 2 or later. It  first appeared in <emphasis>kernel</emphasis> <emphasis>kernel 1.3.46</emphasis>.
</para>
</sect2>

<sect2><title>Implementation source files</title>
<itemizedlist>
<listitem><para>arch/i386/kernel.apm.c</para></listitem>
<listitem><para>include/linux/apm_bios.h</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>APM version 1 specification: ftp://ftp.intel.com/pub/IAL/software_specs/apmv11.doc</para></listitem>
<listitem><para>APM version 2 specification: http://www.microsoft.com/hwdev/busbios/amp_12.htm</para></listitem>
<listitem><para>Homepage: http://worldvisions.ca/~apenwarr/apmd/</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>See also</title>
<itemizedlist>
<listitem><para><emphasis>ACPI</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 10:43:00 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>Avery Pennarun</title>
<sect2><title>Definition</title>
<para>
Current maintainer of the <emphasis>APM</emphasis> code for the Linux <emphasis>kernel</emphasis>.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://worldvisions.ca/~apenwarr/index.html</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:19:10 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect2>
</sect1>
</chapter><chapter id="chapter-b"><title>b</title>
<para>
...
</para>

<sect1><title>Binary</title>
<sect2><title>Definition</title>
<para>
Binary is the base two representation of numbers. This means that all values are expressed solely in terms of ones and zeros.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>...</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>See also</title>
<itemizedlist>
<listitem><para><emphasis>Octal</emphasis></para></listitem>
<listitem><para><emphasis>Decimal</emphasis></para></listitem>
<listitem><para><emphasis>Hexadecimal</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: </para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: TODO</para></listitem>
</itemizedlist>
</sect1><sect1><title>BitKeeper</title>
<sect2><title>Definition</title>
<para>
BitKeeper is a source code management package developed by <emphasis>Larry McVoy</emphasis> in consultation with <emphasis>Linus Torvalds</emphasis>. It is a commercial product, but is made available for use on <emphasis>Open Source</emphasis> projects such as the <emphasis>kernel</emphasis> for free so long as a variety of conditions are met.
</para>

<para>
BitKeeper is a compeditor to <emphasis>CVS</emphasis>, <emphasis>SCCS</emphasis>, <emphasis>CSSC</emphasis> and other similar source code management tools. It has been the center of a large amount of controversy since adopted by <emphasis>Linus Torvalds</emphasis>.
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://www.bitmover.com</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 19 12:46:58 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-c"><title>c</title>
<para>
...
</para>

<sect1><title>cpuid</title>
<sect2><title>Acronym definition</title>
<para>
<emphasis>Intel</emphasis> <emphasis>CPU</emphasis> instruction mnemonic.
</para>

<sect2><title>Definition</title>
<para>
The linux <emphasis>kernel</emphasis> for x86 includes support for the cpuid instruction. The following code is used as of 2.5.59:
</para>

<programlisting>
/*
 * Generic CPUID function
 */
static inline void cpuid(int op, int *eax, int *ebx, int *ecx, int *edx)
{
        __asm__("cpuid"
               : "=a" (*eax),
                 "=b" (*ebx),
                 "=c" (*ecx),
                 "=d" (*edx)
               : "0" (op));
}
</programlisting>

<para>
Other architectures implement cpuid functions as well.
</para>

<para>
This <emphasis>inline assembly</emphasis> specifies that output from this <emphasis>instruction</emphasis> will go to the <emphasis>EAX</emphasis>, <emphasis>EBX</emphasis>, <emphasis>ECX</emphasis>, and <emphasis>EDX</emphasis> <emphasis>registers</emphasis>. In input operand is constrained to being the same as the 0th output operand, in other words <emphasis>EAX</emphasis>.
</para>

<para>
The cpuid instruction has three input operand values, each which return a different set of information about the target processor. Refer to the <emphasis>Intel</emphasis> instruction set reference for more information.
</para>

<para>
There is a program by Phil Karn (KA9Q) called cpuid which calls this instruction as well.
</para>
</sect2>

<sect2><title>Implementation source files</title>
<itemizedlist>
<listitem><para>/include/asm-i386/processor.h</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Intel instruction set manual</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 19 21:26:37 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-d"><title>d</title>
<para>
...
</para>

<sect1><title>Dave Jones</title>
<sect2><title>Definition</title>
<para>
Linux <emphasis>kernel</emphasis> <emphasis>hacker</emphasis> working for <emphasis>Suse</emphasis> based in the UK. Contributions include various <emphasis>kernel</emphasis> hacks, as well as <emphasis>x86info</emphasis>.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://www.codemonkey.org.uk/</para></listitem>
<listitem><para>Blog: http://diary.codemonkey.org.uk/</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:57:55 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>DCE</title>
<sect2><title>Acronym definition</title>
<para>
Data Circuit-terminating Equipment
</para>

<para>
Data Communications Equipment
</para>
</sect2>

<sect2><title>Definition</title>
<para>
This is the <emphasis>RS323</emphasis> serial standard term for a computer or terminal. The standard envisaged that a DCE would be used to communicate with a <emphasis>DTE</emphasis>. A DCE is effectively a modem.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>A RS323 tutorial: http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 26 19:53:44 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>Decimal</title>
<sect2><title>Definition</title>
<para>
...
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>...</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>See also</title>
<itemizedlist>
<listitem><para><emphasis>Binary</emphasis></para></listitem>
<listitem><para><emphasis>Octal</emphasis></para></listitem>
<listitem><para><emphasis>Hexadecimal</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: </para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: TODO</para></listitem>
</itemizedlist>
</sect1><sect1><title>DTE</title>
<sect2><title>Acronym definition</title>
<para>
Data Terminal Equipment
</para>
</sect2>

<sect2><title>Definition</title>
<para>
This is the <emphasis>RS323</emphasis> serial standard term for a computer or terminal. The standard envisaged that a DTE would be used to communicate with a <emphasis>DCE</emphasis>.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>A RS323 tutorial: http://www.camiresearch.com/Data_Com_Basics/RS232_standard.html</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 26 19:53:44 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-e"><title>e</title>
<para>
...
</para>


</chapter><chapter id="chapter-f"><title>f</title>
<para>
...
</para>


</chapter><chapter id="chapter-g"><title>g</title>
<para>
...
</para>

<sect1><title>GCC</title>
<sect2><title>Acronym definition</title>
<para>
<emphasis>GNU</emphasis> <emphasis>CC</emphasis>
</para>

<sect2><title>Definition</title>
<para>
...
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>...</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>See also</title>
<itemizedlist>
<listitem><para><emphasis>Inline assembly</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 19 21:29:25 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: TODO</para></listitem>
</itemizedlist>
</sect1><sect1><title>Greg Lehey</title>
<sect2><title>Definition</title>
<para>
Greg is a former member of <emphasis>OzLabs</emphasis>, who used to work for <emphasis>LinuxCare</emphasis> and then the <emphasis>IBM Linux Technology Center</emphasis>. He is a member of the <emphasis>FreeBSD</emphasis> <emphasis>core team</emphasis>, and wrote <emphasis>The Complete FreeBSD</emphasis>. He is also responsible for the <emphasis>vinum</emphasis> filesystem.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://www.lemis.com/~grog/</para></listitem>
<listitem><para>Blog: http://www.lemis.com/~grog/diary.html</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 19 12:28:13 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-h"><title>h</title>
<para>
...
</para>

<sect1><title>Hexadecimal</title>
<sect2><title>Definition</title>
<para>
Hexadecimal is a counting system based on sixteen digits (0,1, 2, 3, 4, 5, 6, 7). To expand an hexadecimal number to decimal, multiply each digit in the number with the corresponding power of sixteen. The following shell script demonstrates this:
</para>

<programlisting>
#!/bin/bash

# Take an hexadecimal number and output it's decimal version
hexadecimal=$1
length=`echo $hexadecimal | wc -c | tr -d " "`
power=1

while [ $length -gt 2 ]
do
  power=$(( $power * 16 ))
  length=$(( $length - 1 ))
done

decimal=0
while [ "%$hexadecimal%" != "%%" ]
do
  digit=`echo $hexadecimal | cut -b 1`
  echo -n "Hexadecimal = $hexadecimal, Digit = $digit, Power = $power, Value = "

  value=$(( $digit * $power ))
  echo $value
  
  decimal=$(( $decimal + value ))
  power=$(( $power / 16 ))
  hexadecimal=`echo $hexadecimal | sed 's/^.//'`
done

echo ""
echo "Result = $decimal"
</programlisting>

<para>
The following shell script example shows how to convert a decimal number to hexadecimal from first principles:
</para>

<programlisting>
#!/bin/bash

# Take a decimal number and output it's hexadecimal
quotient=$1
while [ $quotient -ne 0 ]
do
  remainder=$(( $quotient % 16 ))
  hexadecimal="$remainder$hexadecimal"
  quotient=$(( $quotient / 16 ))
done

echo $hexadecimal
</programlisting>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para><emphasis>Computer Engineering Hardware Design</emphasis> by <emphasis>M Morris Mano</emphasis> published by Prentice Hall 1988</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>See also</title>
<itemizedlist>
<listitem><para><emphasis>Binary</emphasis></para></listitem>
<listitem><para><emphasis>Octal</emphasis></para></listitem>
<listitem><para><emphasis>Decimal</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Thu Mar 20 15:20:12 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-i"><title>i</title>
<para>
...
</para>

<sect1><title>Inline assembly</title>
<sect2><title>Definition</title>
<para>
<emphasis>GCC</emphasis> provides support for inline assembly with the following construct:
</para>

<programlisting>
asm ( assembler template
	    : output operands			 	(optional)
	    : input operands			 	(optional)
	    : list of clobbered registers 	  	(optional)
	    );	
</programlisting>

<para>
In addition, constraints may be applied to operands to force them to use specific <emphasis>register</emphasis>s or <emphasis>memory</emphasis> <emphasis>address</emphasis>es. Constrains may be as follows:
</para>

<itemizedlist>
<listitem><para><command>r</command> any register</para></listitem>

<listitem><para><command>a</command> %eax</para></listitem>
<listitem><para><command>b</command> %ebx</para></listitem>
<listitem><para><command>c</command> %ecx</para></listitem>
<listitem><para><command>d</command> %edx</para></listitem>
<listitem><para><command>S</command> %esi</para></listitem>
<listitem><para><command>D</command> %edi</para></listitem>

<listitem><para><command>m</command> in memory</para></listitem>

<listitem><para><command>Numeric</command> same constraint as that numbered input variable</para></listitem>
</itemizedlist>

<para>
See the excellent article in the references below for more information.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Article: http://www-106.ibm.com/developerworks/library/l-ia.html</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 19 21:28:22 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-j"><title>j</title>
<para>
...
</para>

<sect1><title>Jones, Dave</title>
<sect2><title>See</title>
<itemizedlist>
<listitem><para><emphasis>Dave Jones</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:57:55 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-k"><title>k</title>
<para>
...
</para>


</chapter><chapter id="chapter-l"><title>l</title>
<para>
...
</para>

<sect1><title>WORD</title>
<sect2><title>See</title>
<itemizedlist>
<listitem><para><emphasis>Greg Lehey</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Mar 19 12:28:13 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-m"><title>m</title>
<para>
...
</para>

<sect1><title>Martin Pool</title>

<sect2><title>Definition</title>
<para>
Martin is a member of the <emphasis>Ozlabs</emphasis> team based in Canberra, Australia. As such, he is a former employee of <emphasis>LinuxCare</emphasis>, <emphasis>VA</emphasis>, and currently works for <emphasis>HP</emphasis>. His development work includes <emphasis>Samba</emphasis>, <emphasis>rsync</emphasis>, <emphasis>rproxy</emphasis>, <emphasis>distcc</emphasis>, <emphasis>PikiPiki</emphasis>, <emphasis>n4</emphasis>, <emphasis>snapfs</emphasis>, <emphasis>newuserfs</emphasis>, <emphasis>Apache</emphasis> and <emphasis>Keyring for PalmOS</emphasis>.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://sourcefrog.net/mbp/</para></listitem>
<listitem><para>Blog: http://www.advogato.org/person/mbp/</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:48:52 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>Michael Still</title>
<sect2><title>Definition</title>
<para>
Some guy who made a bunch of entries in this document.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://www.stillhq.com/</para></listitem>
<listitem><para>Blog: http://www.stillhq.com/cgi-bin/getpage?area=diary&amp;page=index.htm</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:29:39 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>MSR</title>
<sect2><title>Acronym definition</title>
<para>
Model Specific Register
</para>

<sect2><title>Definition</title>
<para>
Many <emphasis>CPU</emphasis> manufacturers include undocumented registers on their processors. Because these registers are model specific, they can be used to help identify the model of the processor installed on a given machine. The Intel instructions to read and write to MSRs are <emphasis>RDMSR</emphasis> and <emphasis>WRMSR</emphasis> respectively. These instructions allow access to the MSR specified in the <emphasis>ECX</emphasis> register.
</para>
</sect2>

<sect2><title>Implementation source files</title>
<itemizedlist>
<listitem><para>...</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Undocumented <emphasis>Pentium</emphasis> MSRs: http://x86.ddj.com/articles/p5msr/pentiummsrs.htm</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 20:48:32 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-n"><title>n</title>
<para>
...
</para>


</chapter><chapter id="chapter-o"><title>o</title>
<para>
...
</para>

<sect1><title>Octal</title>
<sect2><title>Definition</title>
<para>
Octal is a counting system based on eight digits (0,1, 2, 3, 4, 5, 6, 7). To expand an octal number to decimal, multiply each digit in the number with the corresponding power of eight. The following shell script demonstrates this:
</para>

<programlisting>
#!/bin/bash

# Take an octal number and output it's decimal version
octal=$1
length=`echo $octal | wc -c | tr -d " "`
power=1

while [ $length -gt 2 ]
do
  power=$(( $power * 8 ))
  length=$(( $length - 1 ))
done

decimal=0
while [ "%$octal%" != "%%" ]
do
  digit=`echo $octal | cut -b 1`
  echo -n "Octal = $octal, Digit = $digit, Power = $power, Value = "

  value=$(( $digit * $power ))
  echo $value
  
  decimal=$(( $decimal + value ))
  power=$(( $power / 8 ))
  octal=`echo $octal | sed 's/^.//'`
done

echo ""
echo "Result = $decimal"
</programlisting>

<para>
The following shell script example shows how to convert a decimal number to octal from first principles:
</para>

<programlisting>
#!/bin/bash

# Take a decimal number and output it's octal
quotient=$1
while [ $quotient -ne 0 ]
do
  remainder=$(( $quotient % 8 ))
  octal="$remainder$octal"
  quotient=$(( $quotient / 8 ))
done

echo $octal
</programlisting>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para><emphasis>Computer Engineering Hardware Design</emphasis> by <emphasis>M Morris Mano</emphasis> published by Prentice Hall 1988</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>See also</title>
<itemizedlist>
<listitem><para><emphasis>Binary</emphasis></para></listitem>
<listitem><para><emphasis>Decimal</emphasis></para></listitem>
<listitem><para><emphasis>Hexadecimal</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Thu Mar 20 15:20:12 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>Ozlabs</title>
<sect2><title>Definition</title>
<para>
Originally the Australian division of <emphasis>LinuxCare</emphasis> and based in Canberra. Members include <emphasis>Anton Blanchard</emphasis>, <emphasis>Hugh Blemings</emphasis>, <emphasis>David Gibson</emphasis>, <emphasis>Greg Lehey</emphasis>, <emphasis>Martin Pool</emphasis>, <emphasis>Stephen Rothwell</emphasis>, <emphasis>Rusty Russell</emphasis>, <emphasis>Martin Schwenke</emphasis>, <emphasis>Andrew Tridgell</emphasis> and <emphasis>Christopher Yeoh</emphasis>.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>http://www.ozlabs.org</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 18:18:55 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-p"><title>p</title>
<para>
...
</para>

<sect1><title>Pennarun, Avery</title>
<sect2><title>See</title>
<itemizedlist>
<listitem><para><emphasis>Avery Pennarun</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:19:10 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>Pool, Martin</title>
<sect2><title>See</title>
<itemizedlist>
<listitem><para><emphasis>Martin Pool</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:48:52 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-q"><title>q</title>
<para>
...
</para>


</chapter><chapter id="chapter-r"><title>r</title>
<para>
...
</para>

<sect1><title>Rothwell, Stephen</title>
<sect2><title>See</title>
<itemizedlist>
<listitem><para><emphasis>Stephen Rothwell</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 18:12:33 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-s"><title>s</title>
<para>
...
</para>

<sect1><title>Stephen Rothwell</title>
<sect2><title>Definition</title>
<para>
Stephen appeared on the Linux scene with his contribution of <emphasis>APM</emphasis> support whilst working at <emphasis>NEC</emphasis>. He is a member of <emphasis>Ozlabs</emphasis>, and currently works for the <emphasis>IBM Linux Technology Center</emphasis>.
</para>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://www.canb.auug.org.au/~sfr/</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 18:12:33 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1><sect1><title>Still, Michael</title>
<sect2><title>See</title>
<itemizedlist>
<listitem><para><emphasis>Michael Still</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 19:29:39 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Finalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-t"><title>t</title>
<para>
...
</para>

<sect1><title>TSC</title>
<sect2><title>Acronym definition</title>
<para>
Time Stamp Counter
</para>
</sect2>

<sect2><title>Definition</title>
<para>
TODO
</para>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Wed Apr 30 20:18:06 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-u"><title>u</title>
<para>
...
</para>


</chapter><chapter id="chapter-v"><title>v</title>
<para>
...
</para>


</chapter><chapter id="chapter-w"><title>w</title>
<para>
...
</para>


</chapter><chapter id="chapter-x"><title>x</title>
<para>
...
</para>

<sect1><title>x86info</title>
<sect2><title>Definition</title>
<para>
x86info is an application maintained by <emphasis>Dave Jones</emphasis> to identify <emphasis>CPU</emphasis>s fitted to a system.
</para>

<para>
To quote the README file...
</para>

<programlisting>
Somewhere in the mists of time, there was a program by Phil Karn (KA9Q)
called <emphasis>cpuid</emphasis>, which identified CPU. It didn't get updated very often,
and quickly got out of date. It also didn't do much more than just
simple decoding.

x86info was written to succeed Phils work. Initially, it borrowed some bits
from his code, but the last remnants are now long gone. Additional functionality
has been added, such as support for <emphasis>SMP</emphasis>, and building on non-Linux platforms.

For problems specific to the <emphasis>Cygwin</emphasis>/<emphasis>Win32</emphasis> port, contact
Matthew Gregan &lt;mgregan@jade.co.nz&gt;.


Features:
 - <emphasis>SMP</emphasis> support.
 - Recognition of all <emphasis>Intel</emphasis>/<emphasis>AMD</emphasis>/<emphasis>IDT</emphasis>/<emphasis>Cyrix</emphasis>/<emphasis>VIA</emphasis> <emphasis>CPU</emphasis>s.
 - Parsing of model specific <emphasis>registers</emphasis>.
 - Approximation of current <emphasis>CPU</emphasis> MHz.


Caveats:
*  For usage of the <emphasis>MSR</emphasis> / <emphasis>SMP</emphasis> functions, x86info needs the
   x86 cpuid driver provided with the Linux <emphasis>kernel</emphasis> 2.2.18 / 2.4.0,
   and the appropriate nodes in /dev

   To set up these devices, do the following..

        mkdir /dev/cpu
        for i in 0 1 2 3 4 5 6 7
        do
                mkdir /dev/cpu/$i ; cd /dev/cpu/$i
                mknod cpuid c 203 $i
                mknod msr c 202 $i
        done

*  If you are using the <emphasis>cpuid</emphasis> / <emphasis>msr</emphasis> drivers built as modules
   as opposed to built into the kernel, then you should ensure
   the following is in your /etc/modules.conf

        alias <emphasis>char-major-202</emphasis> <emphasis>msr</emphasis>  
        alias <emphasis>char-major-203</emphasis> <emphasis>cpuid</emphasis>

*  To build under <emphasis>Win32</emphasis>/<emphasis>Cygwin</emphasis>, uncomment the second line
   in the Makefile, otherwise some files will fail to build.

*  Usage under <emphasis>Win32</emphasis> is somewhat limited at present:
        - no support for reading <emphasis>MSR</emphasis>s (anyone want to write a driver?)

*  <emphasis>FreeBSD</emphasis> / <emphasis>OpenBSD</emphasis> / <emphasis>NetBSD</emphasis> also have the same limitations.

Info on the command line switches can be found in the man page.
</programlisting>
</sect2>

<sect2><title>References</title>
<itemizedlist>
<listitem><para>Homepage: http://www.codemonkey.org.uk</para></listitem>
</itemizedlist>
</sect2>

<sect2><title>See also</title>
<itemizedlist>
<listitem><para><emphasis>cpuid</emphasis></para></listitem>
</itemizedlist>
</sect2>

<sect2><title>Entry history</title>
<itemizedlist>
<listitem><para>Entry created: Tue Mar 18 20:02:15 EST 2003</para></listitem>
<listitem><para>Entry owner: <emphasis>Michael Still</emphasis> (mikal@stillhq.com)</para></listitem>
<listitem><para>Status: Unfinalized</para></listitem>
</itemizedlist>
</sect1>
</chapter><chapter id="chapter-y"><title>y</title>
<para>
...
</para>


</chapter><chapter id="chapter-z"><title>z</title>
<para>
...
</para>


</chapter>

</book>