Linux Internals and Device Drivers
Duration : 6 Days
Course Code : DG-L1
This training is targeted primarily at software professionals - tech leads, system programmers /
developers, maintainers and testers - who would like to delve much deeper into the internal
functioning of the Linux operating system. This may be in order to work on a project involving this
directly or indirectly (for example, for those on an application development project on the Linux
platform, this training would give them tremendous insight into optimization and code tweaking
based on internal factors). Opensource (and closed-source commercial) contributors / developers (or
to-be contributors) would find this training very useful as well.
This training is based on the latest 2.6 Linux kernel. It starts with a quick and comprehensive look
at important system programming (advanced POSIX process and signal management) topics. It then
moves into deep technical discussion of various kernel internal topics process descriptor, task list,
task creation (with code walkthrough), scheduler design and implementation, virtual memory. Indepth
coverage continues on: kernel build and the procedure to contribute to the kernel codebase;
internal implementation of system calls and the framework of the Linux kernel module
programming; the proc filesystem. The data structures required to understand, and the actual
framework of a Linux character device driver is covered in depth. Sample driver code includes a
simple memory driver as well as I/O port drivers (with an actual custom hardware device) .
(Fairly) advanced driver topics include blocking I/O implementation (wait queues), reentrant-safe
drivers, hardware interrupt programming and concurrency control (SMP safety).
Throughout, professional / industry best practices are taught and encouraged.
Prerequisites:
Mandatory :
- Participants should undergo the above Advanced Linux / Unix Application and System
Programming (DG-L2) training or have the equivalent knowledge/skill sets.
- A good working knowledge of the 'C' programming language.
Preferable : Application development experience on this platform. Shell scripting skills.
Download course coverage details