Skip to main Content

Red Hat Enterprise Linux Kernel Device Drivers

  • Course Code RHD362
  • Duration 5 days

Course Delivery

Additional Payment Options

  • GTC 31 inc. VAT

    GTC, Global Knowledge Training Credit, please contact Global Knowledge for more details

Public Classroom Price

SAR10,868.00

excl. VAT

Request Group Training Add to Cart

Course Delivery

This course is available in the following formats:

  • Company Event

    Event at company

  • Public Classroom

    Traditional Classroom Learning

Request this course in a different delivery format.

Course Overview

Top

Red Hat® Enterprise Linux® Kernel Device Drivers (RHD362) teaches experienced C programmers already familiar with the Linux kernel architecture the skills and strategies they need to develop device drivers.
The course covers device driver models (including character, block, and network device drivers); device interaction (including port I/O, memory mapped I/O, interrupt handling, and DMA transfers); managing PCI and USB devices; strategies for deferring activity using tasklets and work queues; device registration using the Unified Device model and the sysfs filesystem; and process interaction, including basic file operations, polling, and wait queues.

Course Schedule

Top

Target Audience

Top

Experienced C programmers with a good understanding of the Linux kernel who want to learn how to develop device drivers for Linux systems.

Course Objectives

Top
  • Introduction and Review of Kernel Programming
  • Device Drivers
  • Unified Device Model
  • Interrupt Handling
  • Advanced File Operations
  • Interacting With Devices
  • Direct Memory Access
  • PCI Drivers
  • USB Drivers
  • Introduction to Network Device Drivers
  • Introduction to Block Device Drivers

Course Content

Top

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

Course Prerequisites

Top
  • Experience in C programming
  • Red Hat Enterprise Linux Kernel Internals (RHD361) or equivalent experience