We offer comprehensive classes for Linux developers, including:
These classes are up to date and ready to be delivered, unlike some others advertised on the internet.
Click here for details and customization options.
Writing Linux Device Drivers is designed to show experienced programmers how to develop device drivers for Linux systems, and give them a basic understanding and familiarity with the Linux kernel.
Upon mastering this material, you will be familiar with the different kinds of device drivers used under Linux, and know the appropriate API's through which devices (both hard and soft) interface with the kernel.
You are interested in learning how to write device drivers for the Linux operating system. Maybe you are just doing this for fun, but more likely you have this task as part of your job. The purpose here is to ease your path and perhaps shorten the amount of time it takes to reach a level of basic competence in this endeavor.
Our order of presentation is not axiomatic; i.e., we will have some forward referencing and digressions. The purpose is to get you into coding as quickly as possible. Thus we'll tell you early on how to dynamically allocate memory in the simplest way, so you can actually write code, and then later cover the subject more thoroughly. Furthermore, the order of subjects is flexible, so feel free to vary it according to your interests.
Each section has exercises, most of which involve writing code, designed to help you gain familiarity with programming for the Linux kernel. Solutions are provided.
We are not aiming for an expert audience, but instead for a competent and motivated one.
The LAB SOLUTIONS book is a companion volume to Writing Linux Device Drivers, a guide with exercises. While the solutions to the exercises in that volume can be freely downloaded, requests for printed copies of the solutions have been encountered. There is no exposition here, only the statement of the exercises and then the actual code and necessary scripts.
Linux Program Development is designed to bring experienced programmers up to speed quickly in a Linux environment.
You will learn the tools and methods for developing C programs and doing systems programming under Linux, including:
Compilers, compiling, linking and loading programs.
Building and using both static and shared libraries.
Using make and developing Makefiles.
How system calls are made and the difference with regular library functions.
The structure of Linux filesystems.
File I/O functions, using both system-level and standard library calls.
Advanced file operations, including directory and stat functions, and file locking.
Process management, including forking and execing, exiting, process groups, and waiting.
Pipes, unnamed and named (FIFO's).
Signal dispatching and handling.
Writing multi-threaded applications using the pthreads (Posix Threads) library and API.
An introduction to network socket programming.
System V and POSIX IPC, including shared memory, semaphores, and message queues.
Upon mastering this material, you will have the necessary tools to develop advanced applications on a Linux system.
The LAB SOLUTIONS book is a companion volume to Linux Program Development, a guide with exercises. While the solutions to the exercises in that volume can be freely downloaded, requests for printed copies of the solutions have been encountered. There is no exposition here, only the statement of the exercises and then the actual code and necessary scripts.