Learn how to start developing your own BSD device drivers
This course is intended for C programmers who want to learn the basics of device driver development. The course will cover:
- Character devices.
- How to add new system calls to your OS.
- Basic notions about network drivers.
The course consists of seven modules. As part of the course final exam, you will write a character device able to implement a fully functional ARC4 encryptor.
You should know …
- UNIX, BSD basic concepts.
- Networking Fundamentals (including protocols).
- C programming (basic/medium).
- How to use git and related code hosting services.
You will learn:
- Device drivers development concepts.
- Experience implementing device drivers in the BSD Oses using syscalls, char devices and network devices.
- Best practices for testing device driver/kernel-mode code.
Module 1: Introduction
Tutorial 1: Overview of C programming and UNIX.
Tutorial 2: Overview of main data structures.
Module 2: Introducing device drivers
Tutorial 1: Concepts behind device drivers in UNIX-like OSes.
Tutorial 2: Concepts behind the loadable kernel modules (LKMs).
Tutorial 3: How to setup your development system.
Module 3: Add a new syscall to your system
Tutorial 1: Concepts behind syscalls.
Tutorial 2: Add new syscalls to your OS (including an example).
Module 4: Character devices
Tutorial 1: How to write character devices (including an example).
Module 5: Locks and Mutexes
Tutorial 1: Locks and Mutexes
Module 6: Network device basics
Tutorial 1: How to write network devices (including an example).
Module 7: Making your code base more professional
Tutorial 1: How to automate tests for your device driver.
WHO SHOULD TAKE THIS COURSE
- Programmers who love C and UNIX.
WHAT STUDENTS SHOULD BRING
- A laptop/workstation/VM with FreeBSD or NetBSD.
- Enthusiasm for C programming and UNIX.
Rafael Santiago de Souza Netto is a Computer Scientist from Brazil. He has been working as software developer since 2000. He usually contributes writing software for Computer Science research groups from Brazil. He has about 19 years of experience in C programming. His main areas of interest are Programming, Computer Networks, Operating Systems, UNIX culture, Compilers, Cryptography, Information Security and Social Coding. In his spare time he likes to continue writing code but also articles (talking about code) for BSD Magazine, 2600 among other publications.
The course is self-paced – you can visit the training whenever you want and your content will be there.
Once you’re in, you keep access forever, even when you finish the course.
There are no deadlines, except for the ones you set for yourself.
We designed the course so that a diligent student will need about 22 hours of work to complete the training.
Your time will be filled with reading and exercises.
If you have any questions about the course, please contact Ewa at [email protected]