Log in / Sign Up
  • Home
  • About
  • Training
    • Course Catalog
    • Exams
    • Learning Journeys
  • Calendar
  • Contact

Call us

+(27) 11 568 8065

16th Rd, 400 Randjies Office Park, Block L South, Midrand, 1685
mehacademy.africa
MEH ACADEMY
MEH Academy-01
  • Home
  • About
  • Training
    • Course Catalog
    • Exams
    • Learning Journeys
  • Calendar
  • Contact

Developing Linux Device Drivers (LFD430)

Curriculum

  • 1 Section
  • 37 Lessons
  • 4 Days
Expand all sectionsCollapse all sections
  • Topics
    37
    • 1.1
      Introduction Objectives Who You Are The Linux Foundation Linux Foundation Training Certification Programs and Digital Badging Linux Distributions Platforms Preparing Your System Using and Downloading a Virtual Machine Things change in Linux Documentation and Links Course Registration
    • 1.2
      Linux Filesystem Tree Layout OPreliminaries
    • 1.3
      How to Work in OSS Projects ** Overview on How to Contribute Properly Stay Close to Mainline for Security and Quality Study and Understand the Project DNA Figure Out What Itch You Want to Scratch Identify Maintainers and Their Work Flows and Methods Get Early Input and Work in the Open Contribute Incremental Bits, Not Large Code Dumps Leave Your Ego at the Door: Don’t Be Thin-Skinned Be Patient, Develop Long Term Relationships, Be Helpful
    • 1.4
      Device Drivers Types of Devices Mechanism vs. Policy Avoiding Binary Blobs Power Management How Applications Use Device Drivers Walking Through a System Call Accessing a Device Error Numbers printk() devres: Managed Device Resources Labs
    • 1.5
      Modules and Device Drivers The module_driver() Macros Modules and Hot Plug Labs
    • 1.6
      Memory Management and Allocation Virtual and Physical Memory Memory Zones Page Tables kmalloc() __get_free_pages() vmalloc() Slabs and Cache Allocations Labs
    • 1.7
      Character Devices Device Nodes Major and Minor Numbers Reserving Major/Minor Numbers Accessing the Device Node Registering the Device udev dev_printk() and Associates file_operations Structure Driver Entry Points The file and inode Structures Miscellaneous Character Drivers Labs
    • 1.8
      Kernel Features Components of the Kernel User-Space vs. Kernel-Space What are System Calls? Available System Calls Scheduling Algorithms and Task Structures Process Context Labs
    • 1.9
      Transferring Between User and Kernel Space Transferring Between Spaces put(get)_user() and copy_to(from)_user() Direct Transfer: Kernel I/O and Memory Mapping Kernel I/O Mapping User Pages Memory Mapping User-Space Functions for mmap() Driver Entry Point for mmap() Accessing Files from the Kernel Labs
    • 1.10
      Interrupts and Exceptions What are Interrupts and Exceptions? Exceptions Asynchronous Interrupts MSI Enabling/Disabling Interrupts What You Cannot Do at Interrupt Time IRQ Data Structures Installing an Interrupt Handler Labs
    • 1.11
      Timing Measurements Kinds of Timing Measurements Jiffies Getting the Current Time Clock Sources Real Time Clock Programmable Interval Timer Time Stamp Counter HPET Going Tickless Labs
    • 1.12
      Kernel Timers Inserting Delays What are Kernel Timers? Low Resolution Timer Functions Low Resolution Timer Implementation High Resolution Timers Using High Resolution Timers Labs
    • 1.13
      Unified Device Model and sysfs Unified Device Model Basic Structures Real Devices sysfs kset and kobject examples Labs
    • 1.14
      Firmware What is Firmware? Loading Firmware Labs
    • 1.15
      Sleeping and Wait Queues What are Wait Queues? Going to Sleep and Waking Up Going to Sleep Details Exclusive Sleeping Waking Up Details Polling Labs
    • 1.16
      Interrupt Handling: Deferrable Functions and User Drivers Top and Bottom Halves Softirqs Tasklets Work Queues New Work Queue API Creating Kernel Threads Threaded Interrupt Handlers Interrupt Handling in User-Space Labs
    • 1.17
      Hardware I/O Buses and Ports Memory Barriers Registering I/O Ports Reading and Writing Data from I/O Registers Allocating and Mapping I/O Memory Accessing I/O Memory Access by User – ioperm(), iopl(), /dev/port Labs
    • 1.18
      PCI What is PCI? PCI Device Drivers Locating PCI Devices Accessing Configuration Space Accessing I/O and Memory Spaces PCI Express Labs
    • 1.19
      Platform Drivers** What are Platform Drivers? Main Data Structures Registering Platform Devices An Example Hardcoded Platform Data The New Way: Device Trees Labs
    • 1.20
      Direct Memory Access (DMA) What is DMA? DMA Directly to User DMA and Interrupts DMA Memory Constraints DMA Masks DMA API DMA Pools Scatter/Gather Mappings Labs
    • 1.21
      Network Drivers I: Basics Network Layers and Data Encapsulation Datalink Layer Network Device Drivers Loading/Unloading Opening and Closing Labs
    • 1.22
      Network Drivers II: Data Structures net_device Structure net_device_ops Structure sk_buff Structure Socket Buffer Functions netdev_printk() and Associates Labs
    • 1.23
      Network Drivers III: Transmission and Reception Transmitting Data and Timeouts Receiving Data Statistics Labs
    • 1.24
      Network Drivers IV: Selected Topics Multicasting ** Changes in Link State ioctls NAPI and Interrupt Mitigation NAPI Details TSO and TOE MII and ethtool **
    • 1.25
      USB Drivers What is USB? USB Topology Terminology Endpoints Descriptors USB Device Classes USB Support in Linux Registering USB Device Drivers Moving Data Example of a USB Driver Labs
    • 1.26
      Power Management Power Management ACPI and APM System Power States Callback Functions Labs
    • 1.27
      Block Drivers What are Block Drivers? Buffering Registering a Block Driver gendisk Structure Request Handling Labs
    • 1.28
      Closing and Evaluation Survey Evaluation Survey
    • 1.29
      Appendices — Kernel Architecture I UNIX and Linux ** Monolithic and Micro Kernels Object-Oriented Methods Main Kernel Tasks User-Space and Kernel-Space
    • 1.30
      Kernel Programming Preview Task Structure Memory Allocation Transferring Data between User and Kernel Spaces Linked Lists Jiffies Labs
    • 1.31
      Modules What are Modules? A Trivial Example Compiling Modules Modules vs Built-in Module Utilities Automatic Loading/Unloading of Modules Module Usage Count Module Licensing Exporting Symbols Resolving Symbols ** {C.11Labs
    • 1.32
      Kernel Architecture II Processes, Threads, and Tasks Kernel Preemption Real Time Preemption Patch Labs
    • 1.33
      Kernel Configuration and Compilation Installation and Layout of the Kernel Source Kernel Browsers Kernel Configuration Files Kernel Building and Makefiles initrd and initramfs Labs
    • 1.34
      Kernel Style and General Considerations Coding Style Using Generic Kernel Routines and Methods Making a Kernel Patch sparse Using likely() and unlikely() Writing Portable Code, CPU, 32/64-bit, Endianness Writing for SMP Writing for High Memory Systems Power Management Keeping Security in Mind {F.11Labs
    • 1.35
      Race Conditions and Synchronization Methods Concurrency and Synchronization Methods Atomic Operations Bit Operations Spinlocks Seqlocks Disabling Preemption Mutexes Semaphores Completion Functions Read-Copy-Update (RCU) {G.11Reference Counts {G.12Labs
    • 1.36
      Memory Addressing Virtual Memory Management Systems With and Without MMU and the TLB Memory Addresses High and Low Memory Memory Zones Special Device Nodes NUMA Paging Page Tables page structure {H.11Labs
    • 1.37
      Memory Allocation Requesting and Releasing Pages Buddy System Slabs and Cache Allocations Memory Pools kmalloc() vmalloc() Early Allocations and bootmem() Memory Defragmentation Labs Related Cours
This content is protected, please login and enroll in the course to view this content!
How to Work in OSS Projects ** Overview on How to Contribute Properly Stay Close to Mainline for Security and Quality Study and Understand the Project DNA Figure Out What Itch You Want to Scratch Identify Maintainers and Their Work Flows and Methods Get Early Input and Work in the Open Contribute Incremental Bits, Not Large Code Dumps Leave Your Ego at the Door: Don’t Be Thin-Skinned Be Patient, Develop Long Term Relationships, Be Helpful
Prev
Modules and Device Drivers The module_driver() Macros Modules and Hot Plug Labs
Next
MEH Academy-01

Follow us on social media

Training

  • Training Catalog
  • Exams
  • Learning Journeys

CATEGORIES

  • Design
  • Development
  • Marketing
  • Finance & Accounting
  • IT & Software
  • Sales Marketing
  • Photohraphy
  • UX Design
  • Art & Humanities
  • Social Sciences
  • Personal
  • Lifiestyle
  • Seo

SUPPORT

  • Profile
  • Contact
  • Help Center
  • Privacy Policy

GET IN TOUCH

We don’t send spam so don’t worry.

© 2025 MEH Academy. All Rights Reserved.

  • Help
  • Term Conditions
  • Security
  • Privacy Policy
  • Returns Policy