|
Linux Device Drivers and Kernel Course Outline
- 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
|