Linux Kernel Driver Development Basics (14.12.2020)

Agenda

The training will be based upon Kernelprogrammierung: Einführung.

  • Modules

    • Driver initialization and deinitialization

    • Module loading and unloading

  • Devices

    • Device special files

    • sysfs

    • Communicating with user space

  • Synchroniztion Mechanisms.

    • Semaphore

    • Mutex

    • Spinlock

    • Read Copy Update (RCU)

  • Communication Mechanisms: Wait Queues

  • Interrupt Handling and “Bottom Halves”

    • SoftIRQ

    • Tasklet

    • Threaded IRSs

  • Memory management

    • kmalloc() and friends

    • Accessing user space memory

  • DMA API

    • Physical and virtual CPU addresses

    • DMA/Bus addresses

    • DMA mappings: consistent/coherent vs. streaming

  • PCI Subsystem

    • Device initialization

    • Register (“BAR”) access

  • Das Network-Subsystem/NAPI