• Summary
  • Introduction
  • Booting
    • From bootloader to kernel
    • First steps in the kernel setup code
    • Video mode initialization and transition to protected mode
    • Transition to 64-bit mode
    • Kernel decompression
  • Initialization
    • First steps in the kernel
    • Early interrupts handler
    • Last preparations before the kernel entry point
    • Kernel entry point
    • Continue architecture-specific boot-time initializations
    • Architecture-specific initializations, again...
    • End of the architecture-specific initializations, almost...
    • Scheduler initialization
    • RCU initialization
    • End of initialization
  • Interrupts
    • Introduction
    • Start to dive into interrupts
    • Interrupt handlers
    • Initialization of non-early interrupt gates
    • Implementation of some exception handlers
    • Handling Non-Maskable interrupts
    • Dive into external hardware interrupts
    • Initialization of external hardware interrupts structures
    • Softirq, Tasklets and Workqueues
    • Last part
  • System calls
    • Introduction to system calls
    • How the Linux kernel handles a system call
    • vsyscall and vDSO
    • How the Linux kernel runs a program
    • Implementation of the open system call
  • Timers and time management
    • Introduction
    • Clocksource framework
    • The tick broadcast framework and dyntick
    • Introduction to timers
    • Clockevents framework
    • x86 related clock sources
    • Time related system calls
  • Synchronization primitives
    • Introduction to spinlocks
    • Queued spinlocks
    • Semaphores
    • Mutex
    • Reader/Writer semaphores
    • SeqLock
    • RCU
    • Lockdep
  • Memory management
    • Memblock
    • Fixmaps and ioremap
    • kmemcheck
  • Cgroups
    • Introduction to Control Groups
  • SMP
  • Concepts
    • Per-CPU variables
    • Cpumasks
    • The initcall mechanism
  • Data Structures in the Linux Kernel
    • Doubly linked list
    • Radix tree
    • Bit arrays
  • Theory
    • Paging
    • Elf64
    • Inline assembly
    • CPUID
    • MSR
  • Initial ram disk
    • initrd
  • Misc
    • How the kernel is compiled
    • Linkers
    • Linux kernel development
    • Program startup process in userspace
    • Write and Submit your first Linux kernel Patch
    • Data types in the kernel
  • KernelStructures
    • IDT
  • Useful links
  • Contributors
  • Published with GitBook

Useful links

Useful links

Linux boot

  • Linux/x86 boot protocol
  • Linux kernel parameters

Protected mode

  • 64-ia-32-architectures-software-developer-vol-3a-part-1-manual.pdf

Memory management in the Linux kernel

  • Notes on the linux kernel VM subsystem by @lorenzo-stoakes

Serial programming

  • 8250 UART Programming
  • Serial ports on OSDEV

VGA

  • Video Graphics Array (VGA)

IO

  • IO port programming

GCC and GAS

  • GCC type attributes
  • Assembler Directives

Important data structures

  • task_struct definition

Useful links

  • Linux x86 Program Start Up
  • Memory Layout in Program Execution (32 bits)

results matching ""

    No results matching ""