Course Outline headingLinux Device Drivers and Kernel

Linux Device Drivers and Kernel Course Outline

Linux Device Drivers
and Kernel

  • SESSION 1:  Preliminaries
    • Course Objectives
    • Prerequisites
    • Procedures
    • Class Level
    • Kernel Versions and Backwards Compatibility
    • Hardware
    • Documentation
  • SESSION 2:  Kernel and Device Drivers
    • Components of the Kernel
    • User Space vs. Kernel Space
    • Advantage of Device Drivers
    • Types of Devices
  • SESSION 3:  Linux Kernel: Sources and Installation
    • Installing the Kernel Source
    • Layout of the Kernel Source
    • Starting the Kernel
    • lilo and Boot-up Sequence
    • Configuring and Installing the Kernel
  • SESSION 4: Linux Kernel: Methods
    • System Calls vs. Library Functions
    • How System Calls are Made
    • Scheduling Algorithms
    • The task_struct
    • Signaling
    • IPC: Message Queues, Semaphores and Shared Memory
    • Locking Mechanisms
  • SESSION 5: Linux Kernel: SMP and Threads
    • Configuring SMP Kernels and Modules
    • Initialization
    • SMP Algorithms: Scheduling, Locking, etc.
    • Multi-threading under Linux
  • SESSION 6: Modules
    • What is a Module?
    • Module Utilities
    • Compiling a Module
    • Loading a Module
    • Unloading a Module
    • Kernel Versions
    • Exporting Symbols
    • System Calls From Modules
    • A Trivial Example: Hello World
  • SESSION 7: Debugging Techniques
    • Error Numbers
    • printk
    • Querying the Driver
    • Proc Entry
    • Tracing
    • Debuggers and kdb
  • SESSION 8: Character Devices
    • Device Nodes
    • Accessing the Device Node
    • Registering the Driver
    • file_operations Structure
    • Driver Entry Points
    • The file Structure
    • The inode Structure
    • Module Usage Count
  • SESSION 9: Advanced Modularization
    • Automatic Loading/Unloading of Modules
    • Kernel Drivers
    • Persistence of Data Across Loads/Unloads
    • Version Control
  • SESSION 10: Memory Management
    • Virtual and Physical Memory
    • Page Tables, Caching, Swapping
    • Block Buffering
    • Mapping Functions
  • SESSION 11: User <-> Kernel Space
    • put(get)_usr and copy_to(from)_user
  • SESSION 12: Memory Allocation
    • kmalloc and kfree
    • Allocating pages at a time
    • vmalloc and vfree
  • SESSION 13: IOCTLS
    • What are ioctls?
    • Calling ioctls
    • Driver Entry point for Ioctls
    • Defining Ioctls
  • SESSION 14: Time Management
    • Jiffies
    • Inserting Delays
    • Wait Queues
    • Task Queues
    • Kernel Timers
  • SESSION 15: I/O PORTS
    • Registering I/O Ports
    • Reading and Writing Data from Hardware
    • Slowing I/O calls to the hardware
    • Accessing from User Space: ioperm, iopl
  • SESSION 16: PCI/ISA
    • What is PCI?
    • PCI Functions
    • Accessing Configuration Space
    • Reading and Writing to Memory Mapped Devices
  • SESSION 17: Interrupt Handling
    • What are Interrupts?
    • Installing an Interrupt Handler
    • Enabling/Disabling Interrupts
    • Auto-detecting IRQs
    • Interrupt Handlers
  • SESSION 18: Direct Memory Access (DMA)
    • What is DMA?
    • DMA under ISA
    • DMA under PCI
  • SESSION 19: Filesystems
    • Virtual File Systems
    • Available Filesystems under Linux
    • Mounting Filesystems
    • The ext2 Filesystem
  • SESSION 20: Block Drivers
    • What are block drivers?
    • Registering a Block Driver
    • Parameter Arrays
    • blk.h
    • Drivers Request Broker
    • Request Handling
    • Removable Media Devices
    • Partitionable Devices
  • SESSION 21:  Introduction to Network Drivers
    • Network Drivers
    • Loading/Unloading
    • device Structure
    • sk_buff Structure
    • Transmitting Data
    • Receiving Data
    • Statistics

LINUX DEVICE DRIVERS AND KERNEL

(c) COPYRIGHT AXIAN, INC. 2000


Axian Contact Information