Linux Kernel Driver Development

A put-together of kernel related topics.

Topics and Dependencies

cluster_linux Linux cluster_linux_kernel Linux Kernel Driver Development linux_kernel_iomemory IO Memory linux_kernel_modules_hello_world Module Loading, Hello World linux_kernel_iomemory->linux_kernel_modules_hello_world linux_kernel_dma DMA linux_kernel_kmalloc Dynamic Memory: kmalloc() linux_kernel_dma->linux_kernel_kmalloc linux_kernel_waitqueue Waiting for Something linux_kernel_usermem Accessing Userspace Memory linux_kernel_waitqueue->linux_kernel_usermem linux_kernel_cdev_file_operations File Operations on Character Devices linux_kernel_waitqueue->linux_kernel_cdev_file_operations linux_kernel_fedora_module_build Fedora: Building External Kernel Modules linux_kernel_fedora_kernel_build Fedora: Building the Kernel linux_kernel_fedora_module_build->linux_kernel_fedora_kernel_build linux_kernel_spinlock Spinlock (vs. Mutex) linux_kernel_process_vs_atomic Process vs.Atomic Context linux_kernel_spinlock->linux_kernel_process_vs_atomic linux_kernel_workqueue Workqueue linux_kernel_usermem->linux_kernel_workqueue linux_kernel_workqueue->linux_kernel_process_vs_atomic linux_kernel_timer_coding Coding: Timed Event linux_kernel_workqueue->linux_kernel_timer_coding linux_kernel_cdev_first_functionality Coding: First Functionality linux_kernel_cdev_first_functionality->linux_kernel_kmalloc linux_kernel_cdev_first_functionality->linux_kernel_cdev_file_operations linux_kernel_list Doubly Linked Lists linux_kernel_cdev_first_functionality->linux_kernel_list linux_kernel_cdev_refactoring Coding: Refactoring linux_kernel_cdev_refactoring->linux_kernel_cdev_first_functionality linux_kernel_cdev_auto Modern Character Devices linux_kernel_cdev_manual Character Device Basics linux_kernel_cdev_auto->linux_kernel_cdev_manual linux_kernel_spinlock_coding Coding: Fix Sleep While Atomic linux_kernel_spinlock_coding->linux_kernel_spinlock linux_kernel_interrupt_coding Coding: Raspi GPIO Interrupts linux_kernel_spinlock_coding->linux_kernel_interrupt_coding linux_kernel_mutex_coding Coding: Fix Race Condition (Mutex) linux_kernel_mutex Mutex (and RT Mutex) linux_kernel_mutex_coding->linux_kernel_mutex linux_kernel_multiple_devices Coding: Multiple Devices linux_kernel_mutex_coding->linux_kernel_multiple_devices linux_kernel_cdev_manual->linux_kernel_modules_hello_world linux_kernel_mutex->linux_kernel_process_vs_atomic linux_kernel_kmalloc->linux_kernel_process_vs_atomic linux_kernel_multiple_devices->linux_kernel_cdev_refactoring linux_kernel_stub_sysprog_dup dup(), fork(), and Reference Counting (Stub) linux_kernel_pci PCI linux_kernel_pci->linux_kernel_iomemory linux_kernel_pci->linux_kernel_dma linux_kernel_interrupt Interrupts linux_kernel_pci->linux_kernel_interrupt linux_kernel_modules_hello_world->linux_kernel_fedora_module_build linux_kernel_timer_coding->linux_kernel_spinlock_coding linux_kernel_timer Timer Management linux_kernel_timer_coding->linux_kernel_timer linux_kernel_interrupt->linux_kernel_process_vs_atomic linux_kernel_interrupt_coding->linux_kernel_mutex_coding linux_kernel_interrupt_coding->linux_kernel_interrupt linux_kernel_raspi_kernel_build Raspberry Pi: Building the Kernel linux_kernel_interrupt_coding->linux_kernel_raspi_kernel_build linux_kernel_timer->linux_kernel_process_vs_atomic linux_kernel_netdev Network Devices linux_kernel_netdev->linux_kernel_dma linux_kernel_netdev->linux_kernel_interrupt linux_kernel_cdev_file_operations->linux_kernel_cdev_auto linux_kernel_cdev_file_operations->linux_kernel_stub_sysprog_dup