{"version":1,"pages":[{"id":"-M76oKF3mmuPXiuiEphA","title":"Booting","pathname":"/linux-insides","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKF4wftUBaElsk5K","title":"From bootloader to kernel","pathname":"/linux-insides/summary/booting/linux-bootstrap-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Booting"}]},{"id":"-M76oKF54czpAYsuaITe","title":"First steps in the kernel setup code","pathname":"/linux-insides/summary/booting/linux-bootstrap-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Booting"}]},{"id":"-M76oKF6S3KuzXReAPOA","title":"Video mode initialization and transition to protected mode","pathname":"/linux-insides/summary/booting/linux-bootstrap-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Booting"}]},{"id":"-M76oKF7Cq2CQohrznuQ","title":"Transition to 64-bit mode","pathname":"/linux-insides/summary/booting/linux-bootstrap-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Booting"}]},{"id":"-M76oKF8EhhUUDFlZtuy","title":"Kernel decompression","pathname":"/linux-insides/summary/booting/linux-bootstrap-5","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Booting"}]},{"id":"-M76oKF9sZer4WMfzQS0","title":"Kernel load address randomization","pathname":"/linux-insides/summary/booting/linux-bootstrap-6","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Booting"}]},{"id":"-M76oKFAjZoepr_BIoHm","title":"Initialization","pathname":"/linux-insides/summary/initialization","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKFBFM3tFXGekxNf","title":"First steps in the kernel","pathname":"/linux-insides/summary/initialization/linux-initialization-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFCf5p01x-jJsht","title":"Early interrupts handler","pathname":"/linux-insides/summary/initialization/linux-initialization-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFDHFKcxGUYlE3q","title":"Last preparations before the kernel entry point","pathname":"/linux-insides/summary/initialization/linux-initialization-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFEcd0kTotzTKBh","title":"Kernel entry point","pathname":"/linux-insides/summary/initialization/linux-initialization-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFFXrKq3ZK6jiiu","title":"Continue architecture-specific boot-time initializations","pathname":"/linux-insides/summary/initialization/linux-initialization-5","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFG_4ayWWoz_PFk","title":"Architecture-specific initializations, again...","pathname":"/linux-insides/summary/initialization/linux-initialization-6","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFHZlJWDEjfHBZn","title":"End of the architecture-specific initializations, almost...","pathname":"/linux-insides/summary/initialization/linux-initialization-7","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFI1GGXduKdUZKQ","title":"Scheduler initialization","pathname":"/linux-insides/summary/initialization/linux-initialization-8","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFJ02vxjagcS1_g","title":"RCU initialization","pathname":"/linux-insides/summary/initialization/linux-initialization-9","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFKYQ5mUUFCpVIO","title":"End of initialization","pathname":"/linux-insides/summary/initialization/linux-initialization-10","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Initialization"}]},{"id":"-M76oKFLPzH1PyMmtSWB","title":"Interrupts","pathname":"/linux-insides/summary/interrupts","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKFMuL2rhFYe8zqr","title":"Introduction","pathname":"/linux-insides/summary/interrupts/linux-interrupts-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFNWb0uM13uXwrp","title":"Start to dive into interrupts","pathname":"/linux-insides/summary/interrupts/linux-interrupts-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFO482Cwt7hn6wz","title":"Interrupt handlers","pathname":"/linux-insides/summary/interrupts/linux-interrupts-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFPt3Xs0M74CROJ","title":"Initialization of non-early interrupt gates","pathname":"/linux-insides/summary/interrupts/linux-interrupts-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFQK0lVmccVjra9","title":"Implementation of some exception handlers","pathname":"/linux-insides/summary/interrupts/linux-interrupts-5","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFRwA_25y2hrnXt","title":"Handling Non-Maskable interrupts","pathname":"/linux-insides/summary/interrupts/linux-interrupts-6","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFSI09O-s4z9A1P","title":"Dive into external hardware interrupts","pathname":"/linux-insides/summary/interrupts/linux-interrupts-7","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFTGjGaWL4MYUDQ","title":"Initialization of external hardware interrupts structures","pathname":"/linux-insides/summary/interrupts/linux-interrupts-8","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFUDbncTaKRPffr","title":"Softirq, Tasklets and Workqueues","pathname":"/linux-insides/summary/interrupts/linux-interrupts-9","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFVLGW9OutsIC5Z","title":"Last part","pathname":"/linux-insides/summary/interrupts/linux-interrupts-10","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Interrupts"}]},{"id":"-M76oKFWUFmo_QjSS5as","title":"System calls","pathname":"/linux-insides/summary/syscall","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKFX6F_EvA8PSchE","title":"Introduction to system calls","pathname":"/linux-insides/summary/syscall/linux-syscall-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"System calls"}]},{"id":"-M76oKFYRKkBrUyrK8DX","title":"How the Linux kernel handles a system call","pathname":"/linux-insides/summary/syscall/linux-syscall-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"System calls"}]},{"id":"-M76oKFZKtwPeUgl5n5u","title":"vsyscall and vDSO","pathname":"/linux-insides/summary/syscall/linux-syscall-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"System calls"}]},{"id":"-M76oKF_2Wlu4_Lpsi7L","title":"How the Linux kernel runs a program","pathname":"/linux-insides/summary/syscall/linux-syscall-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"System calls"}]},{"id":"-M76oKFaBNJsNR4rVPoU","title":"Implementation of the open system call","pathname":"/linux-insides/summary/syscall/linux-syscall-5","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"System calls"}]},{"id":"-M76oKFb4sq-SdMKHp41","title":"Limits on resources in Linux","pathname":"/linux-insides/summary/syscall/linux-syscall-6","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"System calls"}]},{"id":"-M76oKFc4QeAKjciyYdK","title":"Timers and time management","pathname":"/linux-insides/summary/timers","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKFdkdSwSxHeP-Vo","title":"Introduction","pathname":"/linux-insides/summary/timers/linux-timers-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Timers and time management"}]},{"id":"-M76oKFerM1uIMIh2KYU","title":"Clocksource framework","pathname":"/linux-insides/summary/timers/linux-timers-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Timers and time management"}]},{"id":"-M76oKFfVxul8iERpXdM","title":"The tick broadcast framework and dyntick","pathname":"/linux-insides/summary/timers/linux-timers-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Timers and time management"}]},{"id":"-M76oKFgCHsdkVnREnuW","title":"Introduction to timers","pathname":"/linux-insides/summary/timers/linux-timers-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Timers and time management"}]},{"id":"-M76oKFhNREJQH_5TaSr","title":"Clockevents framework","pathname":"/linux-insides/summary/timers/linux-timers-5","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Timers and time management"}]},{"id":"-M76oKFimpzrsq4xtdP-","title":"x86 related clock sources","pathname":"/linux-insides/summary/timers/linux-timers-6","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Timers and time management"}]},{"id":"-M76oKFjlp8j7fNzwRQA","title":"Time related system calls","pathname":"/linux-insides/summary/timers/linux-timers-7","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Timers and time management"}]},{"id":"-M76oKFk51K0BQWWhmGp","title":"Synchronization primitives","pathname":"/linux-insides/summary/syncprim","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKFlo5hqFsJdqTve","title":"Introduction to spinlocks","pathname":"/linux-insides/summary/syncprim/linux-sync-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Synchronization primitives"}]},{"id":"-M76oKFmNqTo_7SJNLDQ","title":"Queued spinlocks","pathname":"/linux-insides/summary/syncprim/linux-sync-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Synchronization primitives"}]},{"id":"-M76oKFnQoFKvZQ0CPPk","title":"Semaphores","pathname":"/linux-insides/summary/syncprim/linux-sync-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Synchronization primitives"}]},{"id":"-M76oKFow7ySBvxrp7mc","title":"Mutex","pathname":"/linux-insides/summary/syncprim/linux-sync-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Synchronization primitives"}]},{"id":"-M76oKFpercfRCW5aABd","title":"Reader/Writer semaphores","pathname":"/linux-insides/summary/syncprim/linux-sync-5","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Synchronization primitives"}]},{"id":"-M76oKFqvafN5u_Gkid5","title":"SeqLock","pathname":"/linux-insides/summary/syncprim/linux-sync-6","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Synchronization primitives"}]},{"id":"-M76oKFtI5gyk10tqYc-","title":"Memory management","pathname":"/linux-insides/summary/mm","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKFuCFFdNcJa-aCT","title":"Memblock","pathname":"/linux-insides/summary/mm/linux-mm-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Memory management"}]},{"id":"-M76oKFvsS6hRJ-nwmXk","title":"Fixmaps and ioremap","pathname":"/linux-insides/summary/mm/linux-mm-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Memory management"}]},{"id":"-M76oKFwrJiWOmN1phtS","title":"kmemcheck","pathname":"/linux-insides/summary/mm/linux-mm-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Memory management"}]},{"id":"-M76oKFxRpz8Z69pG4Ax","title":"Cgroups","pathname":"/linux-insides/summary/cgroups","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKFy0Vt_e4Frfddy","title":"Introduction to Control Groups","pathname":"/linux-insides/summary/cgroups/linux-cgroups-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Cgroups"}]},{"id":"-M76oKG-5dCQK65KgJ8x","title":"Concepts","pathname":"/linux-insides/summary/concepts","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKG0ta8cm-Ciyp5H","title":"Per-CPU variables","pathname":"/linux-insides/summary/concepts/linux-cpu-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Concepts"}]},{"id":"-M76oKG1Q0YJCYnSU3BG","title":"Cpumasks","pathname":"/linux-insides/summary/concepts/linux-cpu-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Concepts"}]},{"id":"-M76oKG2f9oIGZbLJgEV","title":"The initcall mechanism","pathname":"/linux-insides/summary/concepts/linux-cpu-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Concepts"}]},{"id":"-M76oKG3wAOTlPI6gLaj","title":"Notification Chains","pathname":"/linux-insides/summary/concepts/linux-cpu-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Concepts"}]},{"id":"-M76oKG4mGSVcNQU5q5K","title":"Data Structures in the Linux Kernel","pathname":"/linux-insides/summary/datastructures","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKG5-CMNSjKsqabG","title":"Doubly linked list","pathname":"/linux-insides/summary/datastructures/linux-datastructures-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Data Structures in the Linux Kernel"}]},{"id":"-M76oKG6s5_xVjQHr1SP","title":"Radix tree","pathname":"/linux-insides/summary/datastructures/linux-datastructures-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Data Structures in the Linux Kernel"}]},{"id":"-M76oKG7h2yqEuJ5-fAK","title":"Bit arrays","pathname":"/linux-insides/summary/datastructures/linux-datastructures-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Data Structures in the Linux Kernel"}]},{"id":"-M76oKG8HGd6B94Ko0jP","title":"Theory","pathname":"/linux-insides/summary/theory","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKG9_uyHaKJOVx3e","title":"Paging","pathname":"/linux-insides/summary/theory/linux-theory-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Theory"}]},{"id":"-M76oKGAaDja4pjvLNsB","title":"Elf64","pathname":"/linux-insides/summary/theory/linux-theory-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Theory"}]},{"id":"-M76oKGBmR_xxdBA334m","title":"Inline assembly","pathname":"/linux-insides/summary/theory/linux-theory-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Theory"}]},{"id":"-M6zWhEcw-GOFwcFmeo4","title":"Initial ram disk","pathname":"/linux-insides/summary/initial-ram-disk","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKGGPS3oOUfkjwq-","title":"Misc","pathname":"/linux-insides/summary/misc","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKGH8b17h6LS1_jx","title":"Linux kernel development","pathname":"/linux-insides/summary/misc/linux-misc-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Misc"}]},{"id":"-M76oKGIxhRw74Xc9xO5","title":"How the kernel is compiled","pathname":"/linux-insides/summary/misc/linux-misc-2","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Misc"}]},{"id":"-M76oKGJ8vDDoAUQL8VF","title":"Linkers","pathname":"/linux-insides/summary/misc/linux-misc-3","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Misc"}]},{"id":"-M76oKGKp7-Wt0Nfr09W","title":"Program startup process in userspace","pathname":"/linux-insides/summary/misc/linux-misc-4","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"Misc"}]},{"id":"-M76oKGNKzEiQs9FI8s5","title":"KernelStructures","pathname":"/linux-insides/summary/kernelstructures","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKGO6GCegBoora35","title":"IDT","pathname":"/linux-insides/summary/kernelstructures/linux-kernelstructure-1","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"},{"label":"KernelStructures"}]},{"id":"-M76oKGPBlIA8azzFN9e","title":"Useful links","pathname":"/linux-insides/summary/links","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]},{"id":"-M76oKGQvv68z-4dTyww","title":"Contributors","pathname":"/linux-insides/summary/contributors","siteSpaceId":"sitesp_HMa9g","description":"","breadcrumbs":[{"label":"Summary"}]}]}