If you choose to write a device driver, you must take everything written here as a guide, and no more. I cannot guarantee that this chapter will be free of errors, and I cannot guarantee that you will not damage your computer, even if you follow these instructions exactly. It is highly unlikely that you will damage it, but I cannot guarantee against it. There is only one ``infallible'' direction I can give you: Back up! Back up before you test your new device driver, or you may regret it later.
Quite a few other references are also available on the topic of writing Linux device drivers by now. I put up some (slightly outdated by now, but still worth reading, I think) notes for a talk I gave in May 1995 entitled Writing Linux Device Drivers, which is specifically oriented at character devices implemented as kernel runtime-loadable modules.
Linux Journal has had a long-running series of articles called Kernel Korner which, despite the wacky name, has had quite a bit of useful information on it. Some of the articles from that column may be available on the web; most of them are available for purchase as back issues. One particularly useful series of articles, which focussed in far more detail than my 30 minute talk on the subject of kernel runtime-loadable modules, was in issues 23, 24, 25, 26, and 28. They were written by Alessandro Rubini and Georg v. Zezschwitz. Issue 29 is slated (as of this writing) to have an article on writing network device drivers, written by Alan Cox. Issues 9, 10, and 11 have a series that I wrote on block device drivers.
Copyright (C) 1992, 1993, 1994, 1996 Michael K. Johnson,
johnsonm@redhat.com.
 DMA to user space  by Marcel Boosten
DMA to user space  by Marcel Boosten
  
  How a device driver can driver his device  by Kim yeonseop
How a device driver can driver his device  by Kim yeonseop
  
 
 Untitled
Untitled
  
  memcpy error?  by Edgar Vonk
memcpy error?  by Edgar Vonk  Unable to handle kernel paging request - error  by Edgar Vonk
Unable to handle kernel paging request - error  by Edgar Vonk  _syscallX() Macros  by Tom Howley
_syscallX() Macros  by Tom Howley  MediaMagic Sound Card DSP-16.  How to run in Linux.  by Robert Hinson
MediaMagic Sound Card DSP-16.  How to run in Linux.  by Robert Hinson  What does mark_bh() do?  by Erik Petersen
What does mark_bh() do?  by Erik Petersen 
 Untitled  by Praveen Dwivedi
Untitled  by Praveen Dwivedi  3D Acceleration  by jamesbat@innotts.co.uk
3D Acceleration  by jamesbat@innotts.co.uk  Device Drivers: /dev/radio...  by Matthew Kirkwood
Device Drivers: /dev/radio...  by Matthew Kirkwood  Does anybody know why kernel wakes my driver up without apparant reasons?  by David van Leeuwen
Does anybody know why kernel wakes my driver up without apparant reasons?  by David van Leeuwen  Getting a DMA buffer aligned with 64k boundaries  by Juan de La Figuera Bayon
Getting a DMA buffer aligned with 64k boundaries  by Juan de La Figuera Bayon  Hardware Interface I/O Access  by Terry Moore
Hardware Interface I/O Access  by Terry Moore  Is Anybody know something about SIS 496 IDE chipset?  by Alexander
Is Anybody know something about SIS 496 IDE chipset?  by Alexander  Vertical Retrace Interrupt - I need to use it  by Brynn Rogers
Vertical Retrace Interrupt - I need to use it  by Brynn Rogers  help working with skb structures  by arkane
help working with skb structures  by arkane  Interrupt Sharing ?  by Frieder Löffler
Interrupt Sharing ?  by Frieder Löffler  Device Driver notification of "Linux going down"  by Stan Troeh
Device Driver notification of "Linux going down"  by Stan Troeh  Is waitv honored?  by Michael K. Johnson
Is waitv honored?  by Michael K. Johnson  PCI Driver  by Flavia Donno
PCI Driver  by Flavia Donno 
 There is linux-2.0/drivers/pci/pci.c  by Hasdi
There is linux-2.0/drivers/pci/pci.c  by Hasdi  Re: Network Device Drivers  by Paul Gortmaker
Re: Network Device Drivers  by Paul Gortmaker 
 Re: Network Device Drivers  by Neal Tucker
Re: Network Device Drivers  by Neal Tucker  Transmit function  by Joerg Schorr
Transmit function  by Joerg Schorr 
 Re: Transmit function  by Paul Gortmaker
Re: Transmit function  by Paul Gortmaker  Skbuff  by Joerg Schorr
Skbuff  by Joerg Schorr