Linux Kernel and Device Drivers

This hands-on course focuses on Linux kernel internals programming including device drivers


Référence de la formation

KLI002

Niveau

Intermediate

Nombre de jours

5 Days

Prix

2.526,00 € HT

Lieu de la formation

V: v-learning, virtual class



Pre-requis

Linux experience is a must, including user mode programming (using gcc,Make) and editing.
Programming experience in ANSI C, with the standard library, including sockets programming is also a requirement.

Public

Software architects, designers, developers and analysts with Linux experience who need to learn and program in the kernel environment, including device drivers.

Objectifs de la formation

This hands-on course focuses on Linux kernel internals programming including device drivers. Participants will learn about the Linux kernel architecture, programming in the kernel environment, space considerations, network device drivers and debugging mechanisms.
Following this course, participants will be able to develop Linux kernel modules and device drivers.
Examples are in C.
Course exercises include the implementation of a functional character device driver, and a skeletal network device driver, using kernel 3.10 (RHEL 7.X).

Contenu du cours

Table 1: KLI002 - Course Contents
Chapter Description
Introduction • The Linux Kernel
Kernel Architecture • Linux kernel general properties
• System calls
• Task Scheduler – Details and evolution
• I/O Schedulers
− Elevators
− CFQ
− No op
• Kernel Preemption
• Threads NPTL
The Kernel Perspective • Files and FileSystems
• Devices
− SysFS
• Processes
• Floating Point
Module Programming
(+Exercises)
• Implementing Kernel modules
• Module writing guidelines
• Kernel structures
• Printk
Character Device Drivers
(+Exercises)
• Device numbers
• Essential kernel structures
− inode
− file
− file_operations
− cdev
• Registering a character device
Character Device Drivers
(Continued)
• Device System Calls
• open, close Working with User Space memory
• Implementing read, write and ioctl
• Virtual Memory Management – overview
• mmap
• devtmpfs
• udev
Kernel Space Considerations
(+Exercises)
• Timing issues and kernel timers
• Synchronicity
− semaphores
− spinlocks
− wait queues
• read and write with support of both blocking and non blocking i/o
• poll
• Handling Interrupts
• Bottom Halves
• SoftIRQs, Work Queues, TaskLets and threaded irq’s
Network Device Drivers
(+Exercises)
• The Linux Protocol Stack
• Packet flow – from the interface to the application and back
• Socket buffer operations
• PF_PACKET
• Hooking with NetFilter
• Overriding network system calls
Debugging mechanisms • Kernel debugging techniques in Linux
− strace
− standard /proc and /sys entries
• Implementing entries in /proc
• Handling Oops and Panics
• debugfs
• KProbes
• Magic SYSRQ
• KDB
The End • Summary
• Q&A
• Evaluation

Dates


12 Oct 2020 au 16 Oct 2020


NOTE :
ATTENTION CETTE FORMATION EST SUR MESURE
CE COURS EST REALISABLE TOUTE L'ANNEE AVEC UN MINIMUM DE 5 PARTICIPANTS


Des questions ?

+33 (0) 950 20 91 64


Inscription ou Demande de devis