· The Linux Kernel
· Linux kernel general properties
· System calls
· Task Scheduler – Details and evolution
· I/O Schedulers
· Kernel Preemption
· Threads NPTL
· Files and FileSystems
· Devices
· Processes
· Floating Point
· Implementing Kernel modules
· Module writing guidelines
· Kernel structures
· Kernel structures
· Device numbers
· Essential kernel structures
· Registering a character device
· Device System Calls
· open, close Working with User Space memory
· Implementing read, write and ioctl
· Virtual Memory Management – overview
· mmap
· devtmpfs
· udev
· Timing issues and kernel timers
· Synchronicity
· read and write with support of both blocking and non blocking i/o
· poll
· Handling Interrupts
· Bottom Halves
· SoftIRQs, Work Queues, TaskLets and threaded irq’s
· The Linux Protocol Stack
· Packet flow – from the interface to the application and back
· Socket buffer operations
· PF_PACKET
· Hooking with NetFilter
· Overriding network system calls
· Kernel debugging techniques in Linux
· Implementing entries in /proc
· Handling Oops and Panics
· debugfs
· KProbes
· Magic SYSRQ
· KDB
· Summary
· Q&A
· Evaluation