APLawrence.com -  Resources for Unix and Linux Systems, Bloggers and the self-employed


Essential Linux Device Drivers

Regular readers here know that I have been very disappointed with most Linux kernel and device driver books. I did like "The Linux Kernel Primer", but until this "Essential Linux Device Drivers" book landed on my desk, that was about it.



Title Last Comment
Caches  
- In the case of computer caches, we aren't trying to hide data, just make our access to it quicker or more convenient. -

Boot Time Loadable Drivers  
- Every piece of hardware needs a driver. While many things follow standards or are otherwise already available in the OS, when something new arrives on the scene, the driver may not yet be in your install media. -

semaphore  
- In the computer world, a semaphore controls access to a resource or resources that need to be shared by multiple processes. -

epoch  
- The beginning of time, at least as far as your computer's internal clock knows. Time is measured in seconds since the epoch. For Unix systems (and I think Windows also) that's January 1st, 1970, 00:00:00 -

pfm  
- 2003_09_22.html magic number, automagically, magic cookie,pfm -

affinity  
- In the computer world, this is usually processor affinity, and refers to keeping a process bound to one cpu. Without this binding, a process may move to a different cpu when it is scheduled to run again, and this is apt to be deleterious to cpu cache. -

Keyboard trackball erratic  
- The mouse was all over the place and I tried every variation I could think of based -

Operating System Concepts  
- Basic OS concepts. The CPU (Central Processing Unit) is the heart of any computer, but the operating system is the brain. Unfortunately, understanding exactly how these things really work can be difficult, because it's fairly hard to "play" with the operating system that you are actually using. You can do quite a bit with sophisticated debuggers, but eventually you run into confusion and difficulty. And, as you try more complex tasks, you run the risk of interfering with the real machine's operating system. Finally, modern CPU's are very complex, and that complexity can make it more difficult to understand basic concepts. -

Understanding the Unix Kernel  
- I think that part of the problem is the deliberate "bottom-up" approach: this starts out in the first chapter dealing with memory addressing at the hardware level and goes on from there. -

Tape Autoloader on 2.4 Linux  
- Rob Fantini explains how he got an autoloader tape unit working on RedHat Linux This info may not be clearly written, but shows what I did to get autoloaders working on 2.4 linux. -

Understanding IPTABLES   2012/11/29 BigDumbDinosaur
- Packet filtering is something I've always hard a hard time getting my head around. Not the basics; that's easy enough. It's just the incredible level of detail, the difficulty of keeping it all in your head at once. -

Numeric Unix Error Messages   2010/04/06 TonyLawrence
- It's an unfortunate fact that many programmers are lazy about error messages. Very often, all you get is a cryptic "Error 5", and you may be lucky to get that. -

Linux|Unix ABI- Using other Unix binaries on Linux  
- Linux ABI- pitfalls and considerations of running SCO apps on Linux -

Linux|Unix Performance Tuning and Capacity Planning  
- Strangely, there's a review of this at Amazon that complains about the book being too general, not Linux specific. In fact, it is very Linux specific. -

Linux|Unix File Systems  
- "Linux File Systems" is not entirely trustworthy. For example, the book includes the "Linux Partition HOW-To". That refore refers to limitations like 128 MB swap partitions which have since changed -

Explicit Congestion Notification  
- I was driving myself nuts over the weekend with another strange problem, but I figured it out. I picked up a Sun Sparc 20 off of ebay (so I can mess with Solaris), and when I went to PayPal to pay for it, PayPal kept saying "connection refused". All other sites seemed to work fine, and I used one of those free proxy servers to access it too. -

Understanding the Linux Kernel  
- I'm in the minority here: Amazon loves it, all the reviewers sing its praises, so it must be only me who finds it confusing, incomplete, and annoying. -

Kernel-Segmentation  
- Imagine that you were designing a computer that would be used for a multi-user OS like Linux. If you have any sort of a software background at all, the concept of indirection immediately comes to mind. -

Linux|Unix Internals  
- This is a hard book to recommend. First of all, it is very badly edited- there are all kinds of glaring editorial mistakes, from "Please provide figure caption" captions to author-editor communications that never got taken out (page 18- "no, you're right,lilo"). There are some typos here and there, some clumsy language, that sort of thing. -

 
 
 
 
Kernel Link Failures  
- That's a pretty awful feeling, isn't it? You've got to link a new kernel because you need to change a value or needed to add something, and it fails. -

Automating Program Startup  
- automating program startup methods. When you need something to start automatically, there are several ways to do it. Which one you use depends on your specific needs. -

Cron At and Batch   2014/12/09 TonyLawrence
- Cron, Batch and At, including explanations of why it might not be working and why you shouldn't use crontab -e -

Booting SCO_OSR5- Filesystems  
- Just about anything you are going to do with a computer involves files. Unix in general treats just about everything as a file. -

Booting SCO_OSR5  
- PC Bootstrap: I'm ignoring the POST (Power On Self Test) routines and anything else (security checks, etc) that might be built into your machine. Obviously all of that happens prior to boot, but isn't important for this article. -

Booting SCO_OSR5- CPU  
- I think it's unfortunate that most programmers and administrators don't have much knowledge of hardware or indeed much interest in it. -

Booting SCO_OSR5- Kernel  
- When you type the name of a kernel to get the kernel defined by defbootstr, /boot first checks to see that you haven't typed a built in command. -

Booting SCO_OSR5- Swap and Dump  
- Normally, the swap and dump device are identical. You could change that by editing the file /etc/conf/cf.d/sassign and relinking a new kernel. -

Booting SCO_OSR5- Definitions  
- Footnotes and Definitions for OSR5 Boot articles: For a more concrete case of where it matters: the OSR5 IDE device driver currently does not support 48-bit LBA addressing. It is thus limited to supporting drives <= 128GiB, or <= 137.4GB. You buy a 130GB IDE hard drive: is it going to work or not? -

Booting SCO_OSR5  
- This is a series of articles on the OSR5 boot process. It shows what happens at each stage of boot. -

Panic- Trap 0x0000000E  
- Technically, an E trap is a page fault that referenced an impossible page: the CPU tries to access an address that does not exist and can't be accessed. -

Unix Internals Based on SCO OSR5!  
- I've only begun to read this, but I already know it is going to be one of my favorites. There's even a section on crash, and since the author (Steve Pate) is a Senior Kernel Engineer at SCO, the examples are useful and relevant for OSR5 systems. -

Understanding Device files   2012/08/30 TonyLawrence
- Unix device files are not like ordinary files. Understanding their properties and use is very helpful. -

Understanding Device Drivers  
- Device Driver. Two words that strike fear in the hearts of programmers and users of Unix systems. -

Understanding Device Drivers Part II  
- When that interrupt comes that says the printer is ready, our driver program could be be filling the clist, or it could be sleeping because the clist is full. -

Understanding Device Drivers Part III  
- The first field after the name tells us the routines that are used in the driver. This driver has Open, Close, Read, Write, Ioctl and an Initialization routine. -

SCO_OSR5 Boot Up Messages  
- This is a post concening SCO Unix boot messages and is only left here for historical purposes. -

Linux|Unix Kernel  
- if this is the only book you are going to buy on internals, don't bother. It's a little weak, a little confusing, and just not all that well done. -

lp driver ioctl program   2010/05/26 TonyLawrence
- Unix Programs: LP Driver ioctl program. C code to accompany the sample SCO Unix driver example. -

lp driver include file  
- This is the include file referenced in the sample Unix parallel port driver code. -

lp driver- debugging parallel driver  
- Includes ioctl calls to examine & set driver variables. You can speed it up, slow it down, and generally tune it to the conditions at hand. -

4GB ram problems sco osr5  
- All releases before SCO 507 have a set of behaviors which, while not strictly related to 4GB, tends to cramp the system's style whenever you really _use_ a lot of RAM. -

An example of using the scodb debugger (SCO Unix)  
- To capture a better dump next time, I suggest rigging the system up so that it breaks into scodb when _any_ of these processes die. That means you'll catch it as early as possible -

linux shmmax -->Re How to modify the value ofSHMMAX?  
- linux shmmax -->Re: How to modify the value ofSHMMAX? -

allocb failed NSTRPAGES exceeded streams memory netstat -m-->Re I can't find something!  
- You are running out of streams memory- run "netstat -m"- you'll likely see non-zero amounts in the Failures column. -

Panic!  
- This book is written for and about Sun systems, and uses adb rather than crash (crash is available on Sun).

In spite of the very strong Sun orientation, this is still worthwhile for anyone who wants to learn about analyzing kernel dumps, because a lot of the information is generic to any Unix system, I was unable to work through some of the examples in the book. It certainly could be my fault; I'm not the world's greatest expert at crash dump analysis. -

The Magic Garden  
- In short, this is Unix SVR4 internals, and nothing else. I had to take a Sun course that was heavy on kernel internals; I never would have passed the test without this book. -

The Devil Book  
- One of my favorite books is getting old.Not a lot of people care too much about 4.3BSD (though Linux fans might find more here than the rest of us). This book, affectionately known as the "Devil" book because of it's cover, is 4.3BSD internals, and most of us are far more interested in System V or Linux today. -

Writing Unix Device Drivers  
- It's hard to find good books on this subject, and particularly hard to find references to SCO. -

Configuration and Capacity Planning  
- There is a strong concentration and many pages devoted to NFS, and that may not be of great interest to many of us. You should read those parts anyway; there is a lot of general network knowledge mixed in,0 -

The Design of the Unix Operating System  
- This is another book that is getting old, but at least it's focus is System V Unix, so it still has a lot of value. Bach writes from a programmer's perspective, so anyone doing programming on modern Unix systems should have this as beginning material (I recommend Stevens "Advanced Programming in the Unix Environment" for the gritty details). -

 
 
LOD Communications, Inc.
 
 
(SCO Unix)What is a zombie process?   2011/11/15 TonyLawrence
- (SCO Unix) Why can't you kill a zombie process? One of the early things people learn about Unix is that a "kill -9" is invincible- that a process must die if you send it a KILL (-9). However, that's not entirely true -

(SCO Unix)How much swap space do I need?  
- (SCO Unix) There are two factors to consider - how much you actually need for correct operation of your system, and how much you might need in case of a kernel panic. -

(SCO Unix)Why do I get vhand spinning ?  
- This is an old article about a "vhand spinning" error on SCO Unix and is only left here for historical purposes. -

(SCO Unix)What does "WARNING: tcp_deqdata" mean?  
- This is an old article about 'WARNING: tcp_deqdata' on SCO Unix and is only left here for historical purposes. -

(SCO Unix)How do I know if I have enough streams buffers for TCP/IP and/or NFS?  
- (SCO Unix) How do I know if I have enough streams buffers for TCP/IP and/or NFS? What about Out of stream resources messages? -

(SCO Unix)How do I fix a kernel panic trap 0x00000006?  
- (SCO Unix) Trap 6 is for an invalid instruction; a user process which does this will simply die with a core dump. -

(SCO Unix)How do I get a copy of adb?  
- If you have the Development System, you already have /bin/adb. If not, you may need to grab a copy from your distribution, or it may already have been installed. -

maxexecargs -->Re MAXEXECARGS on SCO Openserver5.0.6  
- One common source of this is 'configure' scripts trying to determine how large an argument space is available. -

linux system map -->Re What is a system map, part2?  
- linux system map - explaining system.map usage -



More Kernel articles

Previous Kernel articles