Kernel Programming
This is the home page for the "Kernel Programming" course.
Here, you will find (in a badly-organised form) all the
material, slides, and information needed to attend the course
For the previous edition of the course, check the old website.
Lessons:
- First lesson: 2019/02/26, 13:00 -> 15:30
- First part of the lesson (in italian): introduction to the course
- Second part of the lesson (in italian): example of toy kernel that just boots
- Second lesson: 2019/03/05, 9:30 -> 12:00
- First part of the lesson (in italian): introduction to the Linux kernel
- Second part of the lesson (in italian): a minimal Linux-based OS
- Thirt part of the lesson (in italian): Linux kernel modules
- Third lesson: 2019/03/13, 11:00 -> 13:30
- First part of the lesson (in italian): testing kernel modules in a simple VM
- Second part of the lesson (in italian): something more about user-space/kernel-space interactions
- Fourth lesson: 2019/03/19, 9:30 -> 12:00
- Fifth lesson: 2019/03/26, 9:30 -> 12:00
- First part of the lesson (in italian): something about kernel mutexes
- Second part of the lesson (in italian): bug in the mutex example, and how to debug it
- Third part of the lesson (in italian): first example of cooperative synchronization
- Fourth part of the lesson (in italian): coping with signals
- Sixth lesson: 2019/04/02, 9:30 -> 12:00
- First part of the lesson (in italian): cooperative synchronization done right, the waitqueues
- Second part of the lesson (in italian): fixing the bug in the previous example (coping with signals)
- Third part of the lesson (in italian): using the Linux kernel completions
- Fourth part of the lesson (in italian): Linux kernel lists
Slides:
Example Code:
Other Material:
- Basic OS image for testing the modules (built with https://gitlab.retis.sssup.it/l.abeni/BuildCore.git)
- Instructions for creating and modifying the simple OS image
- To test a Linux kernel (or module) in a VM while saving the kernel
messages in a text file on the host (for debugging, or similar), add
'
-append "console=tty console=ttyS0" -serial file:log.txt
'
(use the file name you prefer instead of log.txt
)
to the qemu command line