GDB tips: http://www.unknownroad.com/rtfm/gdbtut/gdbadvanced.html Linux Kernel Coding Style: http://www.linuxjournal.com/article/5780 http://www.linuxjournal.com/article/5780?page=0,1 http://www.linuxjournal.com/article/5780?page=0,2 http://www.linuxjournal.com/article/5780?page=0,3 On performance and synchronization: http://erratasec.blogspot.com/2012/01/multithreaded-teaches-wrong-lessons.html Further case study of the material mentioned in the updates would make a fine class project (especially, synchronization between a fast hardware as a source of data and the software consuming this data). Note on ASLR in Linux: http://justanothergeek.chdir.org/2010/02/no-more-alsr-bypass-on-linux-2630.html ===== How kernel implementations of syscall logic find which process called them (i.e., in which "process context" they were called): current() defined in http://lxr.linux.no/#linux+v3.2.1/arch/x86/include/asm/current.h with macros from http://lxr.linux.no/#linux+v3.2.1/arch/x86/kernel/cpu/common.c http://lxr.linux.no/#linux+v3.2.1/include/linux/export.h piped trough http://lxr.linux.no/#linux+v3.2.1/include/linux/percpu-defs.h http://lxr.linux.no/#linux+v3.2.1/arch/x86/include/asm/percpu.h