444 lines
21 KiB
HTML
444 lines
21 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||
<html>
|
||
<head>
|
||
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type">
|
||
<title>Kernel Hacking HOWTO</title>
|
||
<meta name="generator" content="DocBook XSL Stylesheets V1.40">
|
||
<link rel="home" href="index.html" title="Kernel Hacking HOWTO">
|
||
<link rel="next" href="indexs02.html" title="Structure">
|
||
</head>
|
||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||
<div class="navheader">
|
||
<table width="100%" summary="Navigation header">
|
||
<tr><th colspan="3" align="center">Kernel Hacking HOWTO</th></tr>
|
||
<tr>
|
||
<td width="20%" align="left"> </td>
|
||
<th width="60%" align="center"> </th>
|
||
<td width="20%" align="right"> <a href="indexs02.html">Next</a>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<hr>
|
||
</div>
|
||
<div class="article">
|
||
<div class="titlepage">
|
||
<div><h2 class="title">
|
||
<a name="id46569096"></a>Kernel Hacking HOWTO</h2></div>
|
||
<div>
|
||
<h3 class="author">Andrew Ebling</h3>
|
||
<div class="affiliation"><div class="address"><tt><<a href="mailto:kh.howto@andyebling.clara.co.uk">kh.howto@andyebling.clara.co.uk</a>></tt></div></div>
|
||
</div>
|
||
<div><div class="revhistory"><table border="1" width="100%" summary="Revision history">
|
||
<tr><th align="left" valign="top" colspan="3"><b>Revision History</b></th></tr>
|
||
<tr>
|
||
<td align="left">Revision 0.16</td>
|
||
<td align="left">2002-1-17</td>
|
||
<td align="left">ajme</td>
|
||
</tr>
|
||
<tr><td align="left" colspan="3">Complete read thru following a good break, spell & grammar review, added abstract, revised Introduction and prerequisites, new email address, added some FAQs, added "Your Turn" sections.</td></tr>
|
||
<tr>
|
||
<td align="left">Revision 0.15</td>
|
||
<td align="left">2001-12-25</td>
|
||
<td align="left">ajme</td>
|
||
</tr>
|
||
<tr><td align="left" colspan="3">Conversion to DocBook 3.1 SGML to make maintaining the glossary less time consuming, full spell check and a lot of small fixes and improvements.</td></tr>
|
||
<tr>
|
||
<td align="left">Revision 0.14</td>
|
||
<td align="left">2001-12-16</td>
|
||
<td align="left">ajme</td>
|
||
</tr>
|
||
<tr><td align="left" colspan="3">Started glossary, lots of small fixes.</td></tr>
|
||
<tr>
|
||
<td align="left">Revision 0.13</td>
|
||
<td align="left">2001-12-05</td>
|
||
<td align="left">ajme</td>
|
||
</tr>
|
||
<tr><td align="left" colspan="3">Added "Boot time Parameters" section in "General Hacking", CVS section added in tools chapter, "The Linux Kernel Development Cycle" section started, more URLs added and lots more small fixes.</td></tr>
|
||
<tr>
|
||
<td align="left">Revision 0.12</td>
|
||
<td align="left">2001-12-04</td>
|
||
<td align="left">ajme</td>
|
||
</tr>
|
||
<tr><td align="left" colspan="3">Emacs section added in tools chapter, lots more small fixes.</td></tr>
|
||
<tr>
|
||
<td align="left">Revision 0.11</td>
|
||
<td align="left">2001-12-01</td>
|
||
<td align="left">ajme</td>
|
||
</tr>
|
||
<tr><td align="left" colspan="3">Conversion to SGML, fixing it up to be like an LDP HOWTO plus numerous small fixes.</td></tr>
|
||
<tr>
|
||
<td align="left">Revision 0.10</td>
|
||
<td align="left">2001-11-25</td>
|
||
<td align="left">ajme</td>
|
||
</tr>
|
||
<tr><td align="left" colspan="3">Initial release.</td></tr>
|
||
</table></div></div>
|
||
<hr>
|
||
</div>
|
||
<div class="toc">
|
||
<p><b>Table of Contents</b></p>
|
||
<dl>
|
||
<dt> <a href="index.html#intro">Introduction</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="index.html#who">Who this document is for</a>
|
||
</dt>
|
||
<dt> <a href="index.html#whyhack">Why hack the kernel?</a>
|
||
</dt>
|
||
<dt> <a href="index.html#prerequisites">Prerequisites</a>
|
||
</dt>
|
||
<dt> <a href="index.html#copyright">Copyright</a>
|
||
</dt>
|
||
<dt> <a href="index.html#Disclaimer">Disclaimer</a>
|
||
</dt>
|
||
<dt> <a href="index.html#news">News</a>
|
||
</dt>
|
||
<dt> <a href="index.html#credits">Credits</a>
|
||
</dt>
|
||
<dt> <a href="index.html#translation">Translations</a>
|
||
</dt>
|
||
<dt> <a href="index.html#contact">Contacting the Author</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs02.html">Structure</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html">Linux Kernel Overview</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs03.html#kernel-introduction">Introduction</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-kernelmodes">Kernel Modes</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-modules">Modules</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-process">Processes</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-sync">Synchronisation</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-ipc">Signals and Inter Process Communication</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-mm">Memory Management</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-vfs">Virtual File system</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#kernel-diskcache">Disk Caches</a>
|
||
</dt>
|
||
<dt> <a href="indexs03.html#overviewyourturn">Your Turn</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs04.html">Source Tour</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs04.html#whatgoeswhere">What goes where</a>
|
||
</dt>
|
||
<dt> <a href="indexs04.html#keydatastructures">Key data structures</a>
|
||
</dt>
|
||
<dt> <a href="indexs04.html#startingpoints">Starting Points</a>
|
||
</dt>
|
||
<dt> <a href="indexs04.html#srctouryourturn">Your Turn</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs05.html">Tools</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs05.html#editors">Editors</a>
|
||
</dt>
|
||
<dt> <a href="indexs05.html#vim">vim</a>
|
||
</dt>
|
||
<dt> <a href="indexs05.html#emacs">emacs</a>
|
||
</dt>
|
||
<dt> <a href="indexs05.html#development">Development</a>
|
||
</dt>
|
||
<dt> <a href="indexs05.html#srccodenav">Source Code Navigation</a>
|
||
</dt>
|
||
<dt> <a href="indexs05.html#sourcecodemanipulation">Source Code Manipulation</a>
|
||
</dt>
|
||
<dt> <a href="indexs05.html#toolsyourturn">Your Turn</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs06.html">Tasks</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs06.html#generalkernel">General Kernel</a>
|
||
</dt>
|
||
<dt> <a href="indexs06.html#generalhacking">General Hacking</a>
|
||
</dt>
|
||
<dt> <a href="indexs06.html#bughunting">Bug Hunting</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs07.html">Basic Functions</a>
|
||
</dt>
|
||
<dt> <a href="indexs08.html">Drivers & Modules</a>
|
||
</dt>
|
||
<dt> <a href="indexs09.html">Kernel Debugging</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs09.html#whenthingsgowrong">When things go wrong</a>
|
||
</dt>
|
||
<dt> <a href="indexs09.html#oopsanalysis">Oops Analysis</a>
|
||
</dt>
|
||
<dt> <a href="indexs09.html#usingadebugger">Using a Debugger</a>
|
||
</dt>
|
||
<dt> <a href="indexs09.html#debugsession">The Debugging Session</a>
|
||
</dt>
|
||
<dt> <a href="indexs09.html#troubleshooting">Troubleshooting</a>
|
||
</dt>
|
||
<dt> <a href="indexs09.html#miscnotes">Misc. Notes</a>
|
||
</dt>
|
||
<dt> <a href="indexs09.html#usingthelogs">Using the logs</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs10.html">Profiling & Benchmarking</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs10.html#whyprofile">Why profile?</a>
|
||
</dt>
|
||
<dt> <a href="indexs10.html#basicprofiling">Basic profiling</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs11.html">The Linux Kernel Development Cycle</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs11.html#stableseries">Stable Series</a>
|
||
</dt>
|
||
<dt> <a href="indexs11.html#unstableseries">Unstable Series</a>
|
||
</dt>
|
||
<dt> <a href="indexs11.html#featurefreezes">Feature Freezes</a>
|
||
</dt>
|
||
<dt> <a href="indexs11.html#codefreezes">Code Freezes</a>
|
||
</dt>
|
||
<dt> <a href="indexs11.html#intermediatepatches">Intermediate Patches</a>
|
||
</dt>
|
||
<dt> <a href="indexs11.html#devyourturn">Your Turn</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs12.html">Tips</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs12.html#codingtips">Coding Tips</a>
|
||
</dt>
|
||
<dt> <a href="indexs12.html#gendevtips">General Development Tips</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs13.html">More Information</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs13.html#srccodedocs">Source code docs</a>
|
||
</dt>
|
||
<dt> <a href="indexs13.html#links">Links</a>
|
||
</dt>
|
||
<dt> <a href="indexs13.html#books">Books</a>
|
||
</dt>
|
||
<dt> <a href="indexs13.html#web">Web</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs14.html">Getting Help</a>
|
||
</dt>
|
||
<dd><dl>
|
||
<dt> <a href="indexs14.html#mailinglists">mailing lists</a>
|
||
</dt>
|
||
<dt> <a href="indexs14.html#irc">IRC</a>
|
||
</dt>
|
||
</dl></dd>
|
||
<dt> <a href="indexs15.html">FAQ</a>
|
||
</dt>
|
||
<dt> <a href="indexs16.html">To Do</a>
|
||
</dt>
|
||
<dt> <a href="indexs17.html">Glossary</a>
|
||
</dt>
|
||
<dt> <a href="indexs18.html">References & Acknowledgments</a>
|
||
</dt>
|
||
</dl>
|
||
</div>
|
||
<div class="abstract">
|
||
<p>
|
||
<a name="id46569501"></a><b>Abstract</b>
|
||
</p>
|
||
<p>This document is a structured record of my own journey, from a relatively inexperienced application programmer to an even more inexperienced kernel programmer. By sharing my experience, I hope to make kernel hacking more accessible to other members of the open source community.
|
||
</p>
|
||
</div>
|
||
<div class="sect1">
|
||
<a name="intro"></a><div class="titlepage"><div><h2 class="title" style="clear: both">
|
||
<a name="intro"></a>Introduction</h2></div></div>
|
||
<blockquote class="blockquote">
|
||
<font color="red"><attributation>Alan Cox on advice for new hackers, in an interview on http://www.kerneltrap.com with Jeremy Andrews</attributation></font><p>Ignore everyone who tells you kernel hacking is hard, special or different. It's a large program, and bug fixing or driver tweaking can be a best starting point. It is however not magic, nor written in a secret language that only deep initiates with beards can read.</p>
|
||
</blockquote>
|
||
<p>Kernel hacking may not be hard, but it certainly could not be described as easy. The lack of up to date, organised and comprehensive documentation hampers the efforts of even the most determined. Although there is actually quite a lot of information out there in books, web pages, newsgroups, mailing lists and the source itself, it is all very disparate, disorganised and on occasion contradictory.</p>
|
||
<p>This document aims to address this issue. Hopefully it will attract bright new talent to the Linux Kernel Community. One day, someone will have to take over from Linus!</p>
|
||
<div class="sect2">
|
||
<a name="who"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="who"></a>Who this document is for</h3></div></div>
|
||
<p>This document is aimed at:</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570209"></a>Those who are confident compiling the Linux kernel, would like to contribute to it's development, but feel intimidated by the 2 million lines of kernel source code.</p></li>
|
||
<li><p>
|
||
<a name="id46570184"></a>Those who want to find out if kernel programming is of interest.</p></li>
|
||
<li><p>
|
||
<a name="id46570189"></a>Those who would like to get involved in kernel development but don't have time to figure everything out for themselves.
|
||
<li><p>
|
||
<a name="id46570217"></a>Those who want to improve their kernel programming productivity.</p></li>
|
||
</p></li>
|
||
</ul></div>
|
||
<p>It aims to accelerate the learning process by:</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570227"></a>Bringing together into one place as much key information as possible.</p></li>
|
||
<li><p>
|
||
<a name="id46570233"></a>Providing "the basics" in key areas.</p></li>
|
||
<li><p>
|
||
<a name="id46570413"></a>Supplying pointers to more in-depth information.</p></li>
|
||
</ul></div>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="whyhack"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="whyhack"></a>Why hack the kernel?</h3></div></div>
|
||
<p>Some reasons why people get into kernel programming:</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570425"></a>They find the current kernel inadequate in some way and want to help fix the problem, perhaps by writing a new device driver or by working on improving the performance of one of the kernel's subsystems.</p></li>
|
||
<li><p>
|
||
<a name="id46570433"></a>They want to learn how a real operating system works, as opposed to the vague, high level concepts taught on most computer architecture courses.</p></li>
|
||
<li><p>
|
||
<a name="id46570438"></a>They like Linux and want to contribute to its development.</p></li>
|
||
<li><p>
|
||
<a name="id46570441"></a>They find application programming too easy or boring and are looking for something more challenging!</p></li>
|
||
</ul></div>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="prerequisites"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="prerequisites"></a>Prerequisites</h3></div></div>
|
||
<p>What should I know before I start working through this document?</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570453"></a>A fair amount of Linux experience from a user/developer perspective. If you are happy to use the console rather than X-windows to do most of your development work, you are probably ready.</p></li>
|
||
<li><p>
|
||
<a name="id46570461"></a>The ability to compile you own kernel. If this does not include you then read, understand, follow and commit to memory the steps given in the <a href="http://www.linuxdoc.org/HOWTO/Kernel-HOWTO.html" target="_top">Kernel-HOWTO</a>.</p></li>
|
||
<li><p>
|
||
<a name="id46570468"></a>A good, working knowledge of the C programming language. If this does not include you, why not start learning now? There are many good books on C, some of which are well suited to home/self learning e.g. SAMS Publishing "Teach Yourself in 21 Days/24 Hours" series. Alternatively you can find good C tutorials online at <a href="http://directory.google.com/Top/Computers/Programming/Languages/C/Tutorials/" target="_top">google groups.</a>
|
||
</p></li>
|
||
<li><p>
|
||
<a name="id46570483"></a>Some background knowledge of computer hardware and operating systems is useful but not essential.</p></li>
|
||
</ul></div>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="copyright"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="copyright"></a>Copyright</h3></div></div>
|
||
<p>Copyright (c) 2001/2002 Andrew Ebling</p>
|
||
<p>Please freely copy and distribute (sell or give away) this document in any format. It's requested that corrections and/or comments be forwarded to the document maintainer. You may create a derivative work and distribute it provided that you:</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570504"></a>Send your derivative work (in the most suitable format such as SGML) to the LDP (Linux Documentation Project) or the like for posting on the Internet. If not the LDP, then let the LDP know where it is available.</p></li>
|
||
<li><p>
|
||
<a name="id46570511"></a>License the derivative work with this same license or use GPL. Include a copyright notice and at least a pointer to the license used.</p></li>
|
||
<li><p>
|
||
<a name="id46570516"></a> Give due credit to previous authors and major contributors.</p></li>
|
||
</ul></div>
|
||
<p>If you're considering making a derived work other than a translation, it's requested that you discuss your plans with the current maintainer.</p>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="Disclaimer"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="Disclaimer"></a>Disclaimer</h3></div></div>
|
||
<p>Use the information in this document at your own risk. I disavow any potential liability for the contents of this document. Use of the concepts, examples, and/or other content of this document is entirely at your own risk.</p>
|
||
<p>All copyrights are owned by their owners, unless specifically noted otherwise. Use of a term in this document should not be regarded as affecting the validity of any trademark or service mark.</p>
|
||
<p>Naming of particular products or brands should not be seen as endorsements.</p>
|
||
<p>You are strongly recommended to take a backup of your system before modifying the kernel and make backups at regular intervals. If you would miss it if you lost it, back it up!</p>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="news"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="news"></a>News</h3></div></div>
|
||
<p>The latest version of this document will be available at the web site in a number of formats:</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570557"></a><a href="http://www.kernelhacking.org/docs/kernelhacking-HOWTO.sgml" target="_top">SGML source</a>
|
||
</p></li>
|
||
<li><p>
|
||
<a name="id46570567"></a><a href="http://www.kernelhacking.org/docs/kernelhacking-HOWTO.html" target="_top">HTML to read online</a>
|
||
</p></li>
|
||
<li><p>
|
||
<a name="id46570582"></a><a href="http://www.kernelhacking.org/docs/kernelhacking-HOWTO.html.tar.gz" target="_top">tar'ed multi-page HTML</a>
|
||
</p></li>
|
||
<li><p>
|
||
<a name="id46570585"></a><a href="http://www.kernelhacking.org/docs/kernelhacking-HOWTO.txt" target="_top">gzipped text</a>
|
||
</p></li>
|
||
</ul></div>
|
||
<p>The SGML source gets updated most frequently (i.e. whenever I have five minutes to spend on the document), the other formats only get updated for major new releases or when I feel the changes warrant the hassle.</p>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="credits"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="credits"></a>Credits</h3></div></div>
|
||
<p>I have the pleasure of acknowledging contributions from the following people:</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570618"></a>Adam Keys for his emacs contribution.</p></li>
|
||
<li><p>
|
||
<a name="id46570628"></a>Bruce Blinn for his CVS contribution.</p></li>
|
||
<li><p>
|
||
<a name="id46570636"></a>Rik van Riel for technical corrections.</p></li>
|
||
<li><p>
|
||
<a name="id46570640"></a>Jason Copenhaver, Guillaume Morin, Tero Kuusela, Tom Bradley for typos and grammar corrections.</p></li>
|
||
<li><p>
|
||
<a name="id46570645"></a>Igor Gilitschenski, Bohdan Vlasyuk, Tero Kuusela, Florian Zimmermann for general feedback, encouragement and suggestions.</p></li>
|
||
</ul></div>
|
||
<p>If you contributed a typo or grammar correction and your name is not in this list, it probably means that the error had already been reported and fixed. If you reported a problem that has not been fixed in the current version of this document, please re-send your bug report adding REPEAT to the subject line. I do my best to attend to all the reports I get sent, but occasionally something slips through the net.</p>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="translation"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="translation"></a>Translations</h3></div></div>
|
||
<p>As yet there are no translations of this document. Translations are welcome, but please contact me first.</p>
|
||
<p>Translation volunteers to date:</p>
|
||
<div class="itemizedlist"><ul><li><p>
|
||
<a name="id46570672"></a>Paulo Andre has offered to translate the document into Portuguese.</p></li></ul></div>
|
||
</div>
|
||
<div class="sect2">
|
||
<a name="contact"></a><div class="titlepage"><div><h3 class="title">
|
||
<a name="contact"></a>Contacting the Author</h3></div></div>
|
||
<p>Any comments or suggestions can be mailed to me:
|
||
|
||
<a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO" target="_top">kh.howto@clara.co.uk</a>
|
||
</p>
|
||
<p>Please note that I am likely to be changing ISPs soon, so be sure to check the latest version of this document to get a "live" email address.</p>
|
||
<p>Please use these subject line conventions (in addition to your own short and concise subject) to help me handle queries efficiently and filter SPAM:</p>
|
||
<div class="itemizedlist"><ul>
|
||
<li><p>
|
||
<a name="id46570704"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20QUESTION" target="_top">HOWTO QUESTION</a> for any howto related questions or to suggest an FAQ entry.</p></li>
|
||
<li><p>
|
||
<a name="id46570710"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20RFC" target="_top">KH HOWTO RFC</a> for any "request for change" type suggestions.</p></li>
|
||
<li><p>
|
||
<a name="id46570725"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20BUG" target="_top">KH HOWTO BUG</a> for any factual error or bug reports.</p></li>
|
||
<li><p>
|
||
<a name="id46570737"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20TYPO" target="_top">KH HOWTO TYPO</a> for typo corrections.</p></li>
|
||
<li><p>
|
||
<a name="id46570742"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20CONTRIB" target="_top">KH HOWTO CONTRIB</a> to submit a new section. (patch against latest SGML preferred.)</p></li>
|
||
<li><p>
|
||
<a name="id46570758"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20SUGGEST" target="_top">KH HOWTO SUGGEST</a> to make a suggestion. (please check TO DO section at end of document first.)</p></li>
|
||
<li><p>
|
||
<a name="id46570768"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20GLOSSARY" target="_top">KH HOWTO SUGGEST</a> to make a submission for the glossary.</p></li>
|
||
<li><p>
|
||
<a name="id46570777"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO%20FEEDBACK" target="_top">KH HOWTO FEEDBACK</a> for general feedback.</p></li>
|
||
<li><p>
|
||
<a name="id46570788"></a><a href="mailto:kh.howto@andyebling.clara.co.uk?subject=KH%20HOWTO" target="_top">KH HOWTO</a> for any other howto related correspondence.</p></li>
|
||
</ul></div>
|
||
<p>I ruthlessly filter on subject, so any emails not following these conventions <i>may</i> silently/automatically get deleted. Subject lines like "Hi!", "hello", "your website" etc. are usually spam so are likely to get deleted without getting read. Thank you for understanding and co-operation.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="navfooter">
|
||
<hr>
|
||
<table width="100%" summary="Navigation footer">
|
||
<tr>
|
||
<td width="40%" align="left"> </td>
|
||
<td width="20%" align="center"> </td>
|
||
<td width="40%" align="right"> <a href="indexs02.html">Next</a>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width="40%" align="left"> </td>
|
||
<td width="20%" align="center"> </td>
|
||
<td width="40%" align="right"> Structure</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</body>
|
||
</html>
|