| Introduction | p. xv |
| Linux Core Kernel Code | |
| Linux Core Kernel Code | p. 3 |
| arch/i386/kernel/entry.S | p. 3 |
| arch/i386/kernel/init_task.c | p. 9 |
| arch/i386/kernel/irq.c | p. 9 |
| arch/i386/kernel/irq.h | p. 20 |
| arch/i386/kernel/process.c | p. 23 |
| arch/i386/kernel/signal.c | p. 31 |
| arch/i386/kernel/smp.c | p. 39 |
| arch/i386/kernel/time.c | p. 59 |
| arch/i386/kernel/traps.c | p. 66 |
| arch/i386/lib/delay.c | p. 74 |
| arch/i386/mm/fault.c | p. 75 |
| arch/i386/mm/init.c | p. 77 |
| fs/binfmt_elf.c | p. 83 |
| fs/binfmt_java.c | p. 97 |
| fs/exec.c | p. 99 |
| include/asm-generic/smplock.h | p. 108 |
| include/asm-i386/atomic.h | p. 109 |
| include/asm-i386/current.h | p. 110 |
| include/asm-i386/dma.h | p. 110 |
| include/asm-i386/elf.h | p. 114 |
| include/asm-i386/hardirq.h | p. 115 |
| include/asm-i386/page.h | p. 115 |
| include/asm-i386/pgtable.h | p. 116 |
| include/asm-i386/ptrace.h | p. 123 |
| include/asm-i386/semaphore.h | p. 124 |
| include/asm-i386/shmparam.h | p. 125 |
| include/asm-i386/sigcontext.h | p. 126 |
| include/asm-i386/siginfo.h | p. 126 |
| include/asm-i386/signal.h | p. 128 |
| include/asm-i386/smp.h | p. 131 |
| include/asm-i386/softirq.h | p. 133 |
| include/asm-i386/spinlock.h | p. 134 |
| include/asm-i386/system.h | p. 138 |
| include/asm-i386/uaccess.h | p. 140 |
| include/linux/binfmts.h | p. 147 |
| include/linux/capability.h | p. 148 |
| include/linux/elf.h | p. 151 |
| include/linux/elfcore.h | p. 157 |
| include/linux/interrupt.h | p. 158 |
| include/linux/kernel.h | p. 159 |
| include/linux/kernel_stat.h | p. 160 |
| include/linux/limits.h | p. 161 |
| include/linux/mm.h | p. 161 |
| include/linux/module.h | p. 165 |
| include/linux/msg.h | p. 169 |
| include/linux/personality.h | p. 170 |
| include/linux/reboot.h | p. 170 |
| include/linux/resource.h | p. 171 |
| include/linux/sched.h | p. 172 |
| include/linux/sem.h | p. 180 |
| include/linux/shm.h | p. 181 |
| include/linux/signal.h | p. 182 |
| include/linux/slab.h | p. 185 |
| include/linux/smp.h | p. 185 |
| include/linux/smp_lock.h | p. 186 |
| include/linux/swap.h | p. 186 |
| include/linux/swapctl.h | p. 188 |
| include/linux/sysctl.h | p. 189 |
| include/linux/tasks.h | p. 195 |
| include/linux/time.h | p. 195 |
| include/linux/timer.h | p. 196 |
| include/linux/times.h | p. 197 |
| include/linux/tqueue.h | p. 197 |
| include/linux/wait.h | p. 199 |
| init/main.c | p. 199 |
| init/version.c | p. 213 |
| ipc/msg.c | p. 214 |
| ipc/sem.c | p. 219 |
| ipc/shm.c | p. 228 |
| ipc/util.c | p. 237 |
| kernel/capability.c | p. 238 |
| kernel/dma.c | p. 241 |
| kernel/exec_domain.c | p. 242 |
| kernel/exit.c | p. 243 |
| kernel/fork.c | p. 249 |
| kernel/info.c | p. 256 |
| kernel/itimer.c | p. 256 |
| kernel/kmod.c | p. 258 |
| kernel/module.c | p. 260 |
| kernel/panic.c | p. 271 |
| kernel/printk.c | p. 272 |
| kernel/sched.c | p. 276 |
| kernel/signal.c | p. 296 |
| kernel/softirq.c | p. 308 |
| kernel/sys.c | p. 308 |
| kernel/sysctl.c | p. 319 |
| kernel/time.c | p. 331 |
| mm/memory.c | p. 336 |
| mm/mlock.c | p. 346 |
| mm/mmap.c | p. 349 |
| mm/mprotect.c | p. 359 |
| mm/mremap.c | p. 362 |
| mm/page_alloc.c | p. 364 |
| mm/page_io.c | p. 369 |
| mm/slab.c | p. 373 |
| mm/swap.c | p. 395 |
| mm/swap_state.c | p. 396 |
| mm/swapfile.c | p. 399 |
| mm/vmalloc.c | p. 407 |
| mm/vmscan.c | p. 410 |
| Linux Core Kernel Commentary | |
| Introduction To Linux | p. 419 |
| A Brief History Of Linux (And Unix) | p. 419 |
| The Linux Development Process | p. 421 |
| A First Look At The Code | p. 423 |
| Some Characteristics Of The Linux Source Code | p. 423 |
| Some Sample Code | p. 424 |
| Configuring And Compiling The Kernel | p. 431 |
| Kernel Architecture Overview | p. 435 |
| Kernel Design Goals | p. 435 |
| A First Look At The Kernel's Architecture | p. 436 |
| A Closer Look At The Kernel's Architecture | p. 437 |
| So, Is It Layered, Or Modular, Or What? | p. 437 |
| The Relationship Between Design And Implementation | p. 439 |
| System Initialization | p. 443 |
| Booting The PC | p. 443 |
| Initializing The Linux Kernel | p. 444 |
| init | p. 448 |
| System Calls | p. 451 |
| What Is A System Call? | p. 451 |
| How System Calls Are Invoked | p. 452 |
| Some Example System Calls | p. 455 |
| Signals, Interrupts, And Time | p. 459 |
| A Brief Note About Locks | p. 459 |
| Signals | p. 459 |
| Interrupts | p. 470 |
| Time | p. 476 |
| Processes And Threads | p. 479 |
| Scheduling And Timeslices | p. 479 |
| Realtime Processes | p. 479 |
| Priorities | p. 479 |
| Process IDs (PIDs) | p. 480 |
| Reference Counting | p. 480 |
| Capabilities | p. 480 |
| How Processes Are Represented In The Kernel | p. 481 |
| Where Processes Come From: fork And __ clone | p. 483 |
| Running A New Program | p. 484 |
| Executable Formats | p. 486 |
| Scheduling: See How They Run! | p. 487 |
| Respecting Limits | p. 492 |
| All Good Things Must Come To An End--And Here's How They Do It | p. 495 |
| Memory | p. 499 |
| Virtual Memory | p. 499 |
| The Memory Layout Of A Process | p. 502 |
| Paging | p. 505 |
| Swap Devices | p. 509 |
| Memory Mapping With mmap | p. 512 |
| User-Space And Kernel-Space Dynamic Memory | p. 515 |
| Dumping Core | p. 517 |
| System V IPC | p. 521 |
| Message Queues | p. 521 |
| Semaphores | p. 529 |
| Shared Memory | p. 535 |
| Symmetric Multiprocessing (SMP) | p. 541 |
| Parallel Programming Concepts And Primitives | p. 541 |
| APICs and CPU-To-CPU Communication | p. 548 |
| How SMP Support Affects The Kernel | p. 548 |
| Tunable Kernel Parameters | p. 553 |
| /proc/sys Support | p. 554 |
| The sysctl System Call | p. 558 |
| Linux 2.4 | p. 563 |
| GNU General Public License | p. 565 |
| Index | p. 569 |
| Table of Contents provided by Syndetics. All Rights Reserved. |