Device Drivers & Kernel Modules
Write code that runs inside the Linux kernel. Build loadable modules, character drivers, platform drivers, and interface with real hardware peripherals.
Kernel Modules
module_init/exit, module parameters, modprobe/insmod/rmmod, symbol exports, module dependencies, and the module lifecycle.
Character Devices
cdev, file_operations, open/read/write/ioctl, major/minor numbers, udev rules, and device node creation.
Platform Drivers
platform_driver, Device Tree binding, probe/remove lifecycle, devm_* resource management APIs, and driver matching.
Interrupts & Timers
request_irq, threaded IRQs, top/bottom halves, workqueues, tasklets, high-resolution timers, and interrupt context rules.
I2C / SPI / UART
i2c_driver, spi_driver, regmap, tty layer, and writing client drivers for real sensors and peripheral ICs.
sysfs & procfs
kobjects, device attributes, device_create_file, /proc seq_file interface, and exposing driver state to user space.
DMA
DMA engine API, coherent vs streaming mappings, scatter-gather lists, and high-throughput peripheral data transfer.