Advanced knowledge of Linux kernel data structure and the ability to use its framework for writing device drivers is critical for Linux programmers.
In this course, students learn to differentiate between the kernel development environment and writing user space programs. They study Linux kernel subsystems, such as Linux scheduler, memory management, networking stack, and Linux block layer, all of which helps them build high-performing kernel drivers.
We will develop kernel modules that use kernel facilities and services to perform actions, such as interrupt handling, direct memory access (DMA), bus-independent device access, invoking kernel threads, and mapping device memory into the user space.
By introducing students to the proper use of available Linux synchronization primitives such as mutex, rwlock, semaphores, and read copy-update (RCU), students will learn to handle concurrency issues in the driver code.
Learning Outcomes
At the conclusion of the course, you should be able to
- Demonstrate how to avoid common mistakes and pitfalls when writing kernel code.
- Apply Linux device driver APIs to Linux kernel subsystems.
- Explain how to use kernel services for interrupt handling, DMA, memory mapping, and debugging.
- Describe Linux device drivers and practical driver examples that can be readily applied in the work environment.
Topics include
- Implementing device driver file operation methods: read(), write(), poll(), and mmap().
- Scheduling driver tasks via timer API and delegates background work to kernel threads via work queues.
- Exploring Linux device models and building user interfaces to driver functions via procfs and sysfs pseudo file system.
- Building kernel modules via kprobe for debugging and profiling (eBPF) production drivers.
- Developing a fully functional network driver for an emulated Realtek RTL8139 PCI ethernet card, as part of a final project.
- Save Your Seat
Help us confirm course scheduling. Enroll at least seven days before your course starts. - Accessing Canvas
Learn more about gaining access to your course on Canvas in our FAQ section. -
Accessibility and Accommodation
For accessibility questions or to request an accommodation, please visit Access for Students with Disabilities or email the Extension registrar. -
Finance Your Education
Here are ways to pay for your education.
Prerequisite(s):
Sections Open for Enrollment:
Schedule
Date: | Start Time: | End Time: | Meeting Type: | Location: |
---|---|---|---|---|
Tue, 01-21-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 01-28-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 02-04-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 02-11-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 02-18-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 02-25-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 03-04-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 03-11-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 03-18-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |
Tue, 03-25-2025 | 6:30 p.m. | 9:30 p.m. | Flexible | SANTA CLARA / REMOTE |