Advanced kernel programming

Advanced Linux Programming- Kernel Internals and Kernel Space Programming, Introduction to Character Drivers

Duration: 40 Hours

Topics :

  • Linux New Kernel Version Configuration and Build on Ubuntu Desktop.
  • Kernel Internals : Linux Scheduling Policies and Algorithm.
  • Kernel Internals : Virtual Memory Management
  • What is Kernel Module ? Understanding Kernel module interface
  • How to write kernel module , implement “Hello World” module with Example
  • Logging messages in kernel space using printk with Example
  • How module is linked to kernel , kernel symbol table ? with Example
  • Introduction to Kernel Threads , Kernel Thread Vs Process/pthread
  • Using Jiffies Based Timers and High Resolution Timers in Kernel Space
  • Concurrency , Synchronization and Race Condition Issues in Kernel space with Examples
  • Using Kernel Semaphore and mutex for protecting shared data
  • Sharing Data Between ISRs and Threads and Multi-core issues
  • Using spin locks with Example
  • Accessing IO Space , mapping Physical Address to Kernel Virtual Space
  • Interrupt Handling in Linux , Registering ISRs
  • Top-Half and Bottom Half mechanisms
  • Soft-IRQ , tasklet and work queue with Examples
  • Wait Queues
  • Memory Allocation Techniques in Kernel Space
  • Using Kernel Provided Data Structures like Link Lists.
  • Linux Device Driver Architecture
  • Overview of VFS and it’s role in Character Driver
  • Device Files with Examples
  • Device Number Scheme with Example
  • Character Driver Registration
  • Various methods need to be implemented in Character Driver
  • Passing Data to/from Character Driver to User Space application