Sreekrishnan Venkateswaran Archive

Using Kexec and Kdump
Kexec can spawn a kernel-over-a-kernel without the overhead of boot firmware, while kdump can reliably collect a crash-dump using the services of kexec.
Expand Your Debugging Toolkit with Kernel Probes
Tried of booting a debug kernel? Kprobes can intrude into your kernel code and extract debug information or apply run time medication.
The Linux Device Model
Many Linux subsystems, such as the /dev filesystem, hotplug, module autoload, and microcode download have undergone significant changes with the introduction of the new device model. Learn about udev, sysfs, kobjects, classes, and more.
Pardon the Interruption
Interrupt handlers are an integral part of most device drivers. Learn to implement interrupt handlers and bottom halves.
Kernel Boot
Look at messages generated during kernel boot and explore the internals of the more interesting ones.
Notifier Chains and Completion Functions
Kernel helper interfaces make life easier for developers. Learn about notifier chains, completion functions and error handling aids.
Manipulating “Seq” Files
The process filesystem is a window into the mystical innards of the kernel. The seq file interface simplifies the job of process file creators.
Linked Lists and Work Queues
The use of standard kernel helper facilities simplifies your code, weeds out redundancies from the kernel, and helps long-term maintenance. And since the helpers are bug-free and optimized, you inherit those benefits for free.
Down Memory Lane, Part Two
Learn how the kernel views physical memory.
Down Memory Lane, Part One
Most embedded devices boot from flash memory and have data resident on flash-based storage. Here’s how to use flash devices while embedding Linux.
Linux and the BIOS
The x86 kernel has direct and indirect dependencies on the system BIOS. Here’s a look at some of the guts.
Concurrency in the Kernel
Multiple threads of execution need to be synchronized to avoid data corruption and even system freezes.
The Passage of Time
The kernel keeps track of the flow of time. It provides services to sleep wait for long periods and busy wait for short periods, can schedule events to run at a future time, and can do periodic work with microsecond precision. Here’s a look at kernel time.
Kernel Threads
Kernel threads are used to implement background tasks inside the kernel. They are similar to user processes, but live in kernel address space. Here’s how to use them.
Profiling and Tracing
Profiling helps find code bottlenecks. Trace tools provide the ability to extract and interpret details about code execution.
Kernel Debuggers
Debuggers make kernel internals more transparent. On Linux, they come in different flavors: The Kernel debugger, kdb, the Kernel GNU debugger, kgdb, the GNU debugger, gdb, and JTAG- based debuggers. Learn how to use the former three in this month’s column.
Networking and Storage with PC Cards
Thanks to plug-and-play devices like PC cards, you can backup gigabytes of data onto a stamp-sized device or enable your laptop with diverse networking technologies.
Writing PCMCIA/CF Device Drivers
Technologies like Wi-Fi, GPRS, and miniature storage devices are ubiquitous today as PCMCIA or CF cards. The Linux kernel supports PCMCIA devices on a variety of architectures.
Writing a Kernel Line Discipline
Look at the internals of a line discipline and implement a simple line discipline for a serial touch screen controller.