Linux Kernel & Device Driver Programming

COP5641 Spring 2013

[Home] [Syllabus] [Calendar] [Class Code] [Assignments] [References] [Final Projects]



Title: Linux Kernel Development (3rd Edition)
Author: Robert Love
Publisher: Addison-Wesley Professional
ISBN 978-0672329463
Hard copy available from
Title: Linux Device Drivers, 3rd Edition
Authors: Jonathan Corbet, Allessandro Rubini & Greg Kroah-Hartman
Publisher: O'Reilly
ISBN 0-596-00590-3

Kernel Debugging and Development Resources

The following resource guides have been put together by members of the Spring 2013 class:

Student ContributorTool NameSynopsisNotesOther References
Patrick Tully ctags Source code indexer. Indexes source code for fast lookups of methods, variables, structs, macros, etc. class presentation (pptx)
Shuanglong Zhang vim + ctags + cscope vim - text editor

ctags and cscope- generates tags for functions and macros, used for navigating code
class presentation (odp)

Michael Backherms git Speedy tool for distributed revision control and source code management class presentation (pptx)
Steven Bronson static analysis tools (Frama-C) Frama-C is a static analysis tool for C code. Propositions are specified in ACSL (ANSI/ISO C Specification Language). There are a variety of plugins available to handle different aspects of static analysis (value analysis, slicing, etc.). Installation: 'aptitude install frama-c' -- Install frama-c-gui if you want a GUI.

Example: A more accessible example than the one I showed in my presentation is available on their website. Their walkthrough uses GUI features to interactively submit queries about the code.

Kernel Notes:You can build the kernel using 'gcc -save-temps' to generate .i files in the source root, then run frama-c on them: frama-c *.i . For programs with a simpler build system, you can use frama-c directly as you would a C compiler (without relying on another compiler to provide pre-processed source files).
home page

ACSL description

sample program showed in my presentation

another example I didn't show

a very good presentation they provided, but it assumes some familiarity with theorem provers and axiomatic semantics and moved too quickly for people with no background in it
Britton Dennis Doxygen Generates reference manuals in HTML, LATEX, RTF, PostScript, PDF, and man pages. Generates code structure from source files. class presentation: (pptx), (pdf)

Demo: (mpg)
Brief introduction


List of projects that use it

Martin Brown kgdb Remote gdb for the kernel class presentation (pdf) (See slide 23 for complete list)
Ben Buzbee kexec, kdump, and crash Tools for analyzing kernel crashes class presentation (pptx) Crash whitepaper

Tutorial on system setup

Man page - kdump

Man page - kexec

Man page - crash

Linux Kernel

General Interest

Good Books on Operating Systems