Red Hat Enterprise Linux Kernel Device Drivers (RHD362)

Introduction and Review of Kernel Programming

  • What is a Kernel?

  • Linux Kernel Variants

  • Interacting with the Kernel

  • Kernel Implementation

  • The Linux Source Tree

  • Writing Kernel Modules

  • Compiling Kernel Modules

  • More about Kernel Modules

  • Review of Kernel Structures

Device Drivers

  • Device Drivers

  • Device Driver Design

  • Interacting with Character Device Drivers

  • Interacting with Block Device Drivers

  • Interacting with Network Interface Cards

  • Device Nodes

  • Character Device Drivers: Registration

  • The Device Node Problem

  • File Operations

  • Defining File Operations

  • Registering File Operations

  • File I/O Conventions

Unified Device Model

  • Device Model Objects

  • The sysfs filesystem

  • Device Model Structures

  • Tying it all Together

  • Netlink Sockets and User Events

  • Userspace event agents

  • Device Registration

  • Miscellaneous Devices

Interrupt Handling

  • Interrupt Context

  • Handling Interrupts

  • Interrupt Structures

  • ISR Registration

  • System Context

  • Softirqs

  • Deferred Activity: Tasklets

  • Deferred Activity: Work Queues

  • Custom Work Queues

  • Example: Serial Mouse

Advanced File Operations

  • IOCTLs

  • IOCTL Conventions

  • Implementing IOCTLs

  • Lockless IOCTLs

  • Sleeping

  • Wait Queues

  • Wait Queues

  • Variations on wait_event()

  • Sleeping in System Calls

  • Multiplexed I/O

  • Polling

Interacting With Devices

  • Device Interaction

  • Managing Exclusive Access

  • I/O Ports

  • I/O Memory Buffers

  • Accessing I/O Memory Buffers

  • Userspace Drivers

Direct Memory Access

  • Managing DMA

  • Initializing DMA

  • Coherent Allocations

  • Streaming DMA Mappings

PCI Drivers

  • Peripheral Component Interconnect

  • PCI Configuration Space

  • PCI Driver Registration

  • Registering PCI Drivers

  • Driver Probe Function

  • Initializing PCI devices

  • Releasing a PCI Device

  • Managing PCI Resources

  • Accessing Configuration Space

  • Listing PCI Devices

USB Drivers

  • The Universal Serial Bus

  • USB Descriptors

  • USB Transfer Types

  • Linux USB Implementation

  • USB Drivers

  • USB Registration

  • Initializing USB Interfaces

  • USB Class Drivers

  • USB Request Blocks

  • Using USB request blocks

  • Synchronous USB Requests

  • More information

Introduction to Network Device Drivers

  • Networking

  • Network Devices

  • Network Device Callback Functions

  • Network Driver Initialization

  • Network Driver Transmission Queue Control

  • Network Statistics

  • Socket Buffers (Packets)

  • Socket Buffer API

  • Transmission

  • Reception

  • Example Implementations

Introduction to Block Device Drivers

  • Block Devices

  • I/O Scheduling

  • Linux 2.6 Elevator Functions

  • Block Device Driver Implementation

  • Block Device Registration

  • Block Device File Operations

  • The gendisk structure

  • Request Queues

  • Initialization Example

  • Handling Requests

Note: Course outline is subject to change with technology advances and as the nature of the underlying job evolves. For questions or confirmation on a specific objective or topic, please contact a training specialist.