M4
Jes Sørensen

Developing for the Linux Kernel
This tutorial will look at how the Linux kernel is structured and will provide an insight into how to develop code for the kernel. The material will focus on aspects around Linux device drivers, however it is applicable to all areas of Linux kernel development. Focus will be on the latest development kernel series (2.5.x), however a strong emphasis will also be given to issues around supporting the stable 2.4.x series kernel.
Topics include:
- Resource management (interrupts, device memory/IO space, memory allocation ...)
- Device register and DMA memory access
- Locking mechanisms, queues, timers etc.
- Handling user space access
- Writing portable code working across architectures
- SMP, locking and race conditions
- General performance aspects
- Kernel debugging
- Supporting multiple kernel revisions
- Latest aspects in the current development kernelseries
Instructor:
Jes Sørensen has been working on the Linux kernel since 1993, during which he was the maintainer of Linux/m68k for several years. He has worked in a large number of areas in and around the Linux kernel; including high speed networking, Linux/ ia64 and other ports, has written more device drivers than he can remember as well as working on the system libraries (glibc) for Linux/ia64. Jes works as a consultant for Wild Open Source Inc. (http://www.wildopensource.com/) providing Linux development and design services. Prior to this Jes worked for Linuxcare as a member of their Research Group and prior to that he worked at the European Laboratory for Particle Physics (http:// www.cern.ch/).
Who should attend:
Developers who have already started or wish to start developing code for the Linux kernel. It is expected that the audience is reasonably familiar with C programming and the UNIX environment. Some level of experience with operating systems design is a plus, but not required.