- C fundamentals (unions, structs, typedefs, pointers, pointers vs arrays, etc.)
- callbacks and function pointers
- macros and preprocessors
- scope (extern, static, etc.)
- linking libraries and ability to work with Makefile and KConfig Files
- generation of static and shared (
.so
) libraries - Debugging
- Fluent in using GDB, Valgrid, strace, ptrace, etc. debugging and tracing tools
- Pointers on C Book by Kenneth A. Reek (highly recommended) - teaches you pointers and other important topics
- Beej’s Guide to C Programming for basics and fundamental C
- Expert C Programming by van der Linden, Peter
- You need overall knowledge of working of operating systems
- Knowledge of userspace linux APIs and syscalls is highly recommended
- Operating Systems Concept by Abraham Silberschatz or Operating Systems: Three Easy Pieces
- MIT 6.1810 or 6.828 : Operating System Engineering (Labs + xv6 book is must) - link. This will give you the important prerequisites and the confidence to explore into the kernel. Remember, complete all the labs.