📊
linux-insides
  • README
  • Summary
    • 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
      • Kernel load address randomization
    • 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
      • Limits on resources in Linux
    • 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
      • Notification Chains
    • Data Structures in the Linux Kernel
      • Doubly linked list
      • Radix tree
      • Bit arrays
    • Theory
      • Paging
      • Elf64
      • Inline assembly
      • CPUID
      • MSR
    • Initial ram disk
    • Misc
      • Linux kernel development
      • How the kernel is compiled
      • Linkers
      • Program startup process in userspace
      • Write and Submit your first Linux kernel Patch
      • Data types in the kernel
    • KernelStructures
      • IDT
    • Useful links
    • Contributors
Powered by GitBook
On this page
  • linux-insides
  • Mailing List
  • On other languages
  • Docker
  • Contributions
  • Author
  • LICENSE

Was this helpful?

  1. Summary
  2. Synchronization primitives

RCU

PreviousSeqLockNextMemory management

Last updated 2 years ago

Was this helpful?

linux-insides

A book-in-progress about the linux kernel and its insides.

The goal is simple - to share my modest knowledge about the insides of the linux kernel and help people who are interested in linux kernel insides, and other low-level subject matter. Feel free to go through the book

Questions/Suggestions: Feel free about any questions or suggestions by pinging me at twitter , adding an or just drop me an .

Generating eBooks and PDFs -

Mailing List

We have a Google Group mailing list for learning the kernel source code. Here are some instructions about how to use it.

Join

Send an email with any subject/content to kernelhacking+subscribe@googlegroups.com. Then you will receive a confirmation email. Reply it with any content and then you are done.

If you have Google account, you can also open the and click Apply to join group. You will be approved automatically.

Send emails to mailing list

Just send emails to kernelhacking@googlegroups.com. The basic usage is the same as other mailing lists powered by mailman.

Archives

https://groups.google.com/forum/#!forum/kernelhacking

On other languages

Docker

In order to run your own copy of the book with gitbook within a local container:

  1. Enable Docker experimental features with vim or another text editor

     sudo vim /usr/lib/systemd/system/docker.service

    Then add --experimental=true to the end of the ExecStart=/usr/bin/dockerd -H fd:// line and save.

    Eg: ExecStart=/usr/bin/dockerd -H fd:// --experimental=true

    Then, you need to reload and restart the Docker daemon:

     systemctl daemon-reload
     systemctl restart docker.service
  2. Run docker image

    make run
  3. Open your local copy of linux insides book under this url http://localhost:4000 or run make browse

Contributions

Feel free to create issues or pull-requests if you have any problems.

Author

LICENSE

Please read before pushing any changes.

Licensed .

Start here
@0xAX
issue
email
documentation
archive page
Brazilian Portuguese
Chinese
Japanese
Korean
Russian
Spanish
Turkish
CONTRIBUTING.md
@0xAX
BY-NC-SA Creative Commons
linux-kernel