Linux Device Drivers & Kernel Internals (DEC402)
Duration: 7 Days ( 40 Hours)
Course Code: DEC402
Objectives:
Module Programming Direct Memory Access
Device Drivers PCI Drivers
Character Device Drivers USB Drivers
Interrupt Handling Network Device Drivers
Advanced File Operations Introduction to Block Device Drivers
Interacting With Devices Debugging Techniques
Other issues
Prerequisites:
Experience in C programming
Linux System Administration or equivalent UNIX or Linux workstation user skills for development
Shell scripting in a UNIX or Linux environment
Experience with text editors (vi, emacs)
DEC402 (+91) 944 501 7607
Linux Device Drivers & Kernel Internals
1. Module Programming 5. Interrupt Handling 10. PCI Drivers
Kernel coding Interrupt Context Peripheral Component Interconnect
Module programming Handling Interrupts PCI Configuration Space
Module dependency Interrupt Structures PCI Driver Registration
Module parameter passing ISR Registration Registering PCI Drivers
System Context Driver Probe Function
2. Character Device Drivers Softirqs Initializing PCI devices
Deferred Activity: Tasklets Releasing a PCI Device
Device Drivers Deferred Activity: Work Queues Managing PCI Resources
Device Driver Design Custom Work Queues Accessing Configuration Space
Interacting with Character Device Example: Keyboard, Mouse Listing PCI Devices
Drivers
Interacting with Block Device 11. Network Device Drivers
Drivers 6. Interacting With Devices
Interacting with Network Interface Networking
Cards Device Interaction Network Devices
Device Nodes Managing Exclusive Access Network Device Callback Functions
Character Device Drivers: I/O Ports Network Driver Initialization
Registration I/O Memory Buffers Network Driver Transmission Queue
The Device Node Problem Accessing I/O Memory Buffers Control
File Operations Userspace Drivers Network Statistics
Defining File Operations Socket Buffers (Packets)
Registering File Operations Socket Buffer API
File I/O Conventions 7. Memory Management in Kernel Transmission
open Reception
close Memory Initialization Example Implementations
read Memory Management
write page allocators 12. Sysfs, procfs and Debugfs,
lseek slab allocator probing , notifications
buddy allocator
3. Kerel Synchronization methods fragment and cache sysfs intro
bootmem allocator sysfs entry
Source of concurrency kmalloc and kfree procfs intro
Kernel Synchronization techquiques vmalloc procfs entry
atomic operations debugfs intro
semapores 8. Direct Memory Access debugfs entry
mutex probing techniques
spin locks Managing DMA notifications techniques
reach copy update Initializing DMA
memory barriers Coherent Allocations 13. USB Drivers **
etc Streaming DMA Mappings
The Universal Serial Bus
4. Advanced File Operations USB Descriptors
9. Introduction to Block Device Drivers USB Transfer Types
IOCTLs Linux USB Implementation
IOCTL Conventions Block Devices USB Drivers
Implementing IOCTLs I/O Scheduling USB Registration
Lockless IOCTLs Linux 2.6 Elevator Functions Initializing USB Interfaces
Sleeping Block Device Driver USB Class Drivers
Wait Queues Implementation USB Request Blocks
Wait Queues Block Device Registration Using USB request blocks
Variations on wait_event() Block Device File Operations Synchronous USB Requests
Sleeping in System Calls The gendisk structure More information
Multiplexed I/O Request Queues
Polling Initialization Example
Handling Requests
** If time permits or Extras
DEC402 (+91) 944 501 7607