image/svg+xml
Linux kernel map
Constantine Shulyupin
© 2007–2026 Constantine Shulyupin
www.MakeLinux.net/kernel/map
virtual
logical
electronics
I/O
Input/Output
memory
CPU
Central Processing Unit
HI char devices
HI subsystems
address families
sockets access
protocols
network interfaces
networking
Virtual File System
block devices
storage
virtual memory
memory access
logical memory
Page Allocator
memory
threads
processes
Scheduler
interrupts core
CPU specific
multitasking
generic HW access
system run
system
functionalities
layers
interfaces core
7.0
Linux kernel map
logical
file systems
abstract devices
and
HID class drivers
HI peripherals
device drivers
network
device drivers
device
control
storage
drivers
physical memory
operations
device access
and bus drivers
user
space
interfaces
hardware
interfaces
files & directories
access
user peripherals
storage controllers
network controllers
human interfaces
Virtio paravirtualized device descriptor
virtio_device
synchronization
Driver Model
Swap area - extend memory by paging to disk
swap
network
storage
memory
mapping
security
Decouple abstraction from implementation so that the two can vary independently
bridges
debugging
page cache
socket
splice
zero-copy
Vectored I/O
Async I/O
Non-blocking I/O
USB mass storage host template
usb_stor_host_template
SDIO function device descriptor
sdio_func
Secure Digital Input Output
SDIO
Read a 16-bit value from an I/O port
inw
NVMe storage device drivers
drivers/nvme/
Virtio paravirtualized device drivers
drivers/virtio/
Direct Rendering Manager GPU drivers
drivers/gpu/drm/
Direct Rendering Manager
DRM
Enter kernel debugger
kgdb_breakpoint
cgroup v2 filesystem type
cgroup2_fs_type
cgroup v1 filesystem type
cgroup_fs_type
Control Groups
System call to load a kernel module
sys_init_module
Hardware timer interrupt handler
timer_interrupt
Monotonic tick counter since boot
jiffies_64
Update wall clock and process timers each tick
do_timer
Periodic tick handler - update timers and scheduling
tick_periodic
Switch CPU from one task to another
context_switch
Allocate a file structure for an open file
alloc_file
registers
RAM
Random Access Memory
MMU
Memory Management Unit
I/O ports
I/O mem
keyboard
mouse
audio
graphics card
SCSI
Small Computer System Interface
Serial Advanced Technology Attachment
SATA
DMA
Direct Memory Access
Ethernet
Wi-Fi
Advanced Programmable Interrupt Controller
APIC
physically mapped memory
system files
Copy data from user space to kernel space
copy_from_user
Copy data from kernel space to user space
copy_to_user
Low-level memory copy between user and kernel space using rep movsb
copy_user_generic
Set AC flag - enable supervisor access to user pages (SMAP)
stac
Clear AC flag - disable supervisor access to user pages (SMAP)
clac
© 2007 Costa Shulyupin makelinux.github.io/kernel/map
Write data to a file descriptor
ksys_write
Open a file by pathname
sys_open
Replace current process with a new program
sys_execve
Executable format handler - ELF, script, etc.
linux_binfmt
VFS read - common file read path
vfs_read
Task descriptor - one per thread in a process
task_struct
USB device driver descriptor
usb_driver
Multiplexed socket system call entry point
sys_socketcall
Network communication endpoint
socket
Hardware interrupt - signal from device to CPU
interrupt
Create a child process with copy-on-write clone of parent's address space
sys_fork
Main scheduler entry point - pick next task to run
schedule
Common entry point for hardware interrupts
common_interrupt
Per-CPU run queue - list of runnable tasks
rq
Allocate kernel memory
kmalloc
SLAB cache - pool of fixed-size objects
kmem_cache
List of kernel virtual memory mappings
vmlist
Physical memory page descriptor
page
Handle page fault exception
exc_page_fault
Write a 16-bit value to an I/O port
outw
Character device descriptor
cdev
/sysfs
/dev
Read a 16-bit value from memory-mapped I/O
readw
/proc
Register a character device with the kernel
cdev_add
Mouse input event handler
mousedev
Keyboard input handler - keymap and key event processing
kbd
Intel 8042 keyboard and mouse controller driver
i8042_driver
PS/2 mouse driver
psmouse
AT and PS/2 keyboard driver
atkbd_drv
Terminal device abstraction
tty
Console output device
console
ALSA sound device file operations
snd_fops
V4L2 video device file operations
video_fops
Console device file operations
console_fops
VGA text mode console driver
vga_con
Saved CPU register state
pt_regs
Allocate free pages and return virtual address
__get_free_pages
Kernel virtual memory area from vmalloc
vm_struct
Map files or devices into memory
sys_mmap
/proc/self/maps
Pending timer entry in the timer wheel
timer_list
Process pending software interrupts
do_softirq
Deferred work in softirq context
tasklet_struct
Per-device I/O request queue
request_queue
Register an interrupt handler for an IRQ line
__setup_irq
Initialize the SCSI subsystem
init_scsi
ext4 filesystem file operations
ext4_file_operations
Representation of a disk device
gendisk
Block device driver operations
block_device_operations
Flush filesystem caches to disk
sys_sync
Suspend execution for a specified time
sys_nanosleep
Sleep for a timeout then return to run queue
schedule_timeout
Read and write operations for sysfs attributes
sysfs_ops
Memory descriptor - virtual address space of a task
mm_struct
Loadable kernel module descriptor
module
Character device number to device mapping
cdev_map
Reserve an I/O port range
request_region
Socket protocol operations - bind, connect, accept, sendmsg
proto_ops
File operations for socket file descriptors
socket_file_ops
/proc/net/protocols
Socket-to-transport layer protocol operations
proto
TCP protocol handler
tcp_prot
Streaming Internet socket operations
inet_stream_ops
Datagram Internet socket operations
inet_dgram_ops
UDP protocol handler
udp_prot
IPv4 socket address family
inet_family_ops
Create a new socket
__sock_create
IP protocol receive handler
ip_rcv
Network device descriptor
net_device
Allocate a network device structure
alloc_netdev_mq
Allocate a new hardware device for mac80211 Wi-Fi stack
ieee80211_alloc_hw
VFS operations for file I/O
file_operations
Read or clear kernel log buffer
sys_syslog
MegaRAID SCSI host adapter driver initialization
megaraid_init
USB host controller driver
usb_hcd
xHCI host controller interrupt handler
xhci_irq
USB host controller interrupt handler
usb_hcd_irq
Submit a USB request block for transfer
usb_submit_urb
Submit a USB request block to xHCI controller
xhci_urb_enqueue
Return a completed USB request block to the submitter
usb_hcd_giveback_urb
PCI device driver descriptor
pci_driver
Kernel entry point after boot loader
start_kernel
Kernel boot and initialization entry point
init/main.c
Execute the init process
run_init_process
Call all module init functions at boot
do_initcalls
Reboot or power off the system
sys_reboot
Change the program break - grow or shrink heap for user-space memory allocation
sys_brk
x86 architecture-specific code
arch/x86/
Per-IRQ descriptor - interrupt state and handler chain
irq_desc
Timer callback to wake up a sleeping process
process_timeout
Put a task on the run queue
activate_task
Create a new task with shared resources
sys_clone
Create a child process sharing parent's address space
sys_vfork
Open file descriptor - links process to inode
file
Virtual memory area descriptor
vm_area_struct
Filesystem object - file or directory metadata
inode
Program execution and binary format loading
fs/exec.c
Page cache for a file or block device
address_space
Send a packet via IP routing
ip_queue_xmit
Transmit a packet on a network device
dev_queue_xmit
Receive a packet from a network device
netif_rx
Initialize Ethernet device defaults
ether_setup
Transmit a frame via mac80211 WiFi stack
ieee80211_xmit
Receive a frame via mac80211 WiFi stack
ieee80211_rx
SCSI disk block device operations
sd_fops
SCSI device descriptor
scsi_device
SCSI upper level device driver descriptor
scsi_driver
Create a new socket file descriptor
sys_socket
System call function prototypes
linux/syscalls.h
User-space memory access routines
linux/uaccess.h
Read from PCI configuration space
pci_read
Write to PCI configuration space
pci_write
Map device physical memory into kernel virtual address space
ioremap
Reserve a memory-mapped I/O region
request_mem_region
Shut down and power off the machine
kernel_power_off
Shut down and restart the machine
kernel_restart
Write a 16-bit value to memory-mapped I/O
writew
Create an IPv4 socket
inet_create
VFS write - common file write path
vfs_write
Transmit a frame via iwlwifi driver
iwl_mvm_mac_tx
UNIX family socket operations
unix_family_ops
Mount a filesystem on a directory
sys_mount
Parse and link a kernel module into the kernel
load_module
Filesystem type descriptor - one per registered filesystem
file_system_type
Mounted filesystem descriptor
super_block
Core page allocator - allocate physical pages
__alloc_pages
Handle fatal CPU exception - print oops and panic
die
/proc/interrupts
Clear interrupt flag - disable interrupts on local CPU
cli
Set interrupt flag - enable interrupts on local CPU
sti
Switch CPU context from one task to another
switch_to
64-bit system call entry point from user space
entry_SYSCALL_64
Initialize CPU exception handlers
trap_init
Internal kernel implementation of the read system call
ksys_read
Create a new inode through VFS
vfs_create
Process scheduler implementation
kernel/sched/
Network device drivers
drivers/net/
Print CPU register contents for debugging
show_regs
Block I/O layer
block/
Device drivers
drivers/
Input device drivers - keyboard, mouse, touchscreen
drivers/input/
ALSA sound subsystem
sound/
Media device drivers - video capture, TV tuners
drivers/media/
Kernel initialization code
init/
Core kernel code
kernel/
include/asm/
SLOB simple list of blocks memory allocator
mm/slob.c
/proc/slabinfo
USB mass storage device driver
usb_storage_driver
Device bus type descriptor
bus_type
Base device structure in the driver model
device
Base driver structure in the driver model
device_driver
Driver callback to detect and initialize a device
probe
Device class - groups devices by function
class
Create a device and register it with sysfs
device_create
Register a driver with the driver model
driver_register
Core driver model infrastructure
drivers/base/
Kernel object - base for sysfs representation and reference counting
kobject
Linux Security Modules framework
security/
Security hook function declarations
linux/security.h
Initialize SELinux mandatory access control
selinux_init
LSM hook for socket creation permission check
security_socket_create
LSM hook for inode creation permission check
security_inode_create
Register a PCI driver with the kernel
pci_register_driver
AHCI SATA PCI device driver
ahci_pci_driver
libata
SCSI host bus adapter instance
Scsi_Host
Check file open permissions
may_open
Allocate a workqueue for deferred work execution
alloc_workqueue
Allocate a network packet buffer
alloc_skb
Advanced Linux Sound Architecture
ALSA
Inode operations - create, lookup, link, unlink, mkdir
inode_operations
RAM-based filesystem - basis for tmpfs
ramfs_fs_type
SMB/CIFS network filesystem file operations
cifs_file_ops
NFS network filesystem file operations
nfs_file_operations
Socket buffer - network packet data and metadata
sk_buff
Virtual memory area management and mmap implementation
mm/mmap.c
Link a VMA into the address space data structures
vma_link
Set up CPU registers to start a new user-space thread
start_thread
Convert kernel virtual address to struct page
virt_to_page
Framebuffer device operations
fb_ops
Reserve all PCI I/O and memory regions for a device
pci_request_regions
Framebuffer device file operations
fb_fops
Add a character device to the system
cdev_add
Register a character device with a major number
register_chrdev
Collection of kobjects of the same type
kset
Sleep for a specified number of milliseconds
msleep
Core implementation of fork, vfork, and clone
kernel_clone
Create a new kernel thread
kernel_thread
Pointer to the currently running task
current
Low-level task information stored at bottom of kernel stack
thread_info
Sleeping lock with a counter
semaphore
Workqueue for scheduling deferred work
workqueue_struct
Unit of deferred work submitted to a workqueue
work_struct
Create a kernel thread without starting it
kthread_create
Wake up tasks waiting on a wait queue
wake_up
Integer type with atomic operations
atomic_t
Mutual exclusion sleeping lock
mutex
Start a timer on the current CPU
add_timer
Acquire a semaphore or return if interrupted by a signal
down
_interruptible
Kernel swap daemon - reclaim pages under memory pressure
kswapd
Handle a page fault for a swapped-out page
do_swap_page
Filesystem implementations and VFS
fs/
Memory management subsystem
mm/
Core kernel code
kernel/
Networking stack
net/
Allocate an object from a slab cache
kmem_cache_alloc
Core kernel code
kernel/
Input handler for mouse-compatible devices
mousedev_handler
Allocate a page from the zone free lists
get_page_from_freelist
Wake up the page reclaim daemon
wakeup_kswapd
Direct page reclaim entry point
try_to_free_pages
Memory zone - DMA, Normal, HighMem
zone
V4L2 video device descriptor
video_device
Netfilter hook - packet filtering and mangling entry point
NF_HOOK
Build and send a TCP segment
tcp_transmit_skb
drivers,
registers and interrupts
Send data on a TCP socket
tcp_sendmsg
Receive data from a TCP socket
tcp_recvmsg
Send data over a UDP socket
udp_sendmsg
Receive data from a UDP socket
udp_recvmsg
Process a received network packet
netif_receive_skb
Network device structure and interface definitions
linux/netdevice.h
Send an IP packet to the network
ip_output
System Call Interface
/dev/mem
File operations for /dev/mem physical memory access
mem_fops
Socket ioctl handler
sock_ioctl
Network device ioctl handler
dev_ioctl
Driver model device and class definitions
linux/device.h
Kernel object and kset definitions
linux/kobject.h
Device type within a class
device_type
Initialize the driver model subsystem
driver_init
x86 memory management - page tables, TLB, PAT
arch/x86/mm/
Set a signal handler for a signal
sys_signal
++
Allocate an interrupt line
request_irq
Get process and child CPU times
sys_times
Get time in seconds since epoch
sys_time
Get time with microsecond precision
sys_gettimeofday
Fast user-space locking system call
sys_futex
system calls
and system files
cross-functional
modules
Set memory region access protection
sys_mprotect
Mount the root filesystem during boot
mount_root
Signal delivery and handling implementation
kernel/signal.c
Send a signal to a process
sys_kill
Shared memory VMA operations
shm_vm_ops
Shared memory control operations
sys_shmctl
Attach a shared memory segment to process address space
sys_shmat
Get file status by file descriptor
sys_newfstat
Wait for I/O readiness on multiple file descriptors
kern_select
KVM device ioctl handler for VM management
kvm_dev_ioctl
Kernel-based Virtual Machine hypervisor
kvm
camera
interrupt
controller
Universal Serial Bus
USB
controller
Peripheral Component Interconnect
PCI
controller
USB Video Class camera driver
uvc_driver
Device control system call
sys_ioctl
Register a network device with the kernel
register_netdev
Set signal handler with extended options
sys_sigaction
Create a pipe with flags
sys_pipe2
Flush file data and metadata to disk
sys_fsync
VFS helper for filesystem sync
vfs_fsync
Write changed pages to backing store
do_writepages
Get a reference to a file by file descriptor
fget
File descriptor structure
fd
Get filesystem type information
sys_sysfs
List of registered filesystem types
file_systems
Create an inotify filesystem event watcher
sys_inotify_init
Get file attributes through VFS
vfs_getattr
Get file status by file descriptor through VFS
vfs_fstat
Create an epoll event notification instance
sys_epoll_create
Allocate an object from a slab cache
kmem_cache_alloc
Check access permissions on an inode
inode_permission
Notify filesystem of inode attribute change
notify_change
Set inode attributes - size, timestamps, permissions
inode_setattr
Change file access permissions
sys_chmod
Read data into multiple buffers
sys_readv
I/O vector for scatter/gather operations
iovec
Wait for events on file descriptors
sys_poll
Duplicate pipe content without consuming
sys_tee
Get overall system statistics
sys_sysinfo
Enable a swap area for paging
sys_swapon
Swap area descriptor
swap_info
Synchronize memory mapping with file
sys_msync
Map files or devices into memory
sys_mmap
Release a semaphore
up
Release a mutex lock
mutex_unlock
Atomic compare and exchange with release ordering
atomic_long_try_cmpxchg_release
Queue a task for wakeup
wake_q_add
Acquire mutex, interruptible by signals
mutex_lock
_interruptible
Try to acquire mutex lock
__mutex_trylock_common
Atomic compare and exchange with acquire ordering
atomic_long_try_cmpxchg_acquire
Page global directory entry
pgd_t
Page middle directory entry
pmd_t
Page table entry
pte_t
Architecture-specific boot initialization
setup_arch
Initialize memory management subsystem
mm_init
Initialize slab allocator
kmem_cache_init
Virtual memory statistics counters
vm_stat
Set process capabilities
sys_capset
x86 platform initialization operations
x86_init
Ordered list of memory zones for allocation
zonelist
Free kernel memory
kfree
Free compound or single pages
__free_pages
Free a single page to the buddy allocator
__free_one_page
LSM hook for setting process capabilities
security_capset
Handle SysRq key command
handle_sysrq
Print message to kernel log ring buffer
printk
Kernel log ring buffer
log_buf
Trace and control another process
sys_ptrace
Register a kernel probe at a function entry
register_kprobe
Module parameter descriptor
kernel_param
Initialize native x86 interrupt controller
native_init_IRQ
Set an interrupt gate in the Interrupt Descriptor Table
set_intr_gate
Queue work on the system workqueue
schedule_work
Execute pending tasklets
tasklet_action
Initialize tasklet and hi-tasklet softirqs
softirq_init
Declare a kernel module parameter
module_param
Register a bus type in the driver model
bus_register
Free unused boot memory and finalize memory setup
mem_init
Initialize vmalloc subsystem
vmalloc_init
/sys/class/
Initialize uevent netlink socket
kobject_uevent_init
Send uevent notification to userspace
kobject_uevent
Filesystem notification interface for inotify and fanotify
fsnotify
DRM graphics driver descriptor
drm_driver
OOM killer - select and kill a process to free memory
out_of_memory
Free vmalloc memory
vfree
.
.
Change file owner and group
sys_chown
Notify filesystem change event
fsnotify_change
Handle fanotify filesystem event
fanotify_handle_event
/proc/meminfo
Total number of usable RAM pages
totalram_pages
Initialize a work_struct with callback function
INIT_WORK
Queue work on a workqueue
queue_work
Allocate a SCSI host adapter instance
scsi_host_alloc
Read directory entries
sys_getdents
Read ext4 directory entries
ext4_readdir
List of free pages in a buddy allocator order
free_list
Buddy allocator free area for a given order
free_area
VM counter for number of free pages
NR_FREE_PAGES
/proc/net/
Show TCP IPv4 socket info in /proc/net/tcp
tcp4_seq_show
Show SCSI generic device info in /proc
sg_proc_seq_show_dev
Show routing table trie entries in /proc
fib_trie_seq_show
Connect a socket to a remote address
sys_connect
Accept an incoming connection on a socket
__sys_accept4
Bind a socket to a local address
__sys_bind
Mark socket as listening for connections
sys_listen
Send a message on a socket
__sys_sendmsg
Receive a message from a socket
__sys_recvmsg
Set socket options
__sys_setsockopt
Zero-copy splice data from a pipe to a socket
splice_to_socket
Zero-copy splice data from a socket to a pipe
sock_splice_read
Zero-copy transfer between file descriptors
sys_sendfile
Zero-copy splice directly between two files via pipe
do_splice_direct
Core zero-copy splice implementation between two files
__do_splice
Intel ICE network driver transmit handler
ice_start_xmit
Intel ICE miscellaneous interrupt handler
ice_misc_intr
Probe and initialize USB network device
usbnet_probe
Signal that network link carrier is detected
netif_carrier_on
Look up routing table for incoming packet
ip_route_input
Receive incoming UDP packets
udp_rcv
Receive incoming TCP IPv4 packets
tcp_v4_rcv
Deliver IP packet to upper protocol layers
ip_local_deliver
Push pending IP frames to the network
ip_push_pending_frames
function
implementations
boot, shutdown
power management
Suspend system to disk
hibernate
Machine-level operations - restart, power off, halt
machine_ops
Set up early exception handlers in Interrupt Descriptor Table
idt_setup_early_traps
Initialize IPv4 networking stack
inet_init
Send a message through a socket
sock_sendmsg
Zero-copy splice data from TCP socket to pipe
tcp_splice_read
Release spinlock and restore interrupt state
spin_unlock_irqrestore
Acquire spinlock and save interrupt state
spin_lock_irqsave
Sleep until a condition becomes true
wait_event
Wait for a completion event
wait_for_completion
Signal a completion event
complete
Module owner field for reference counting
owner
Softirq handler for expired kernel timers
run_timer_softirq
Fill sysinfo struct with memory statistics
si_meminfo
Fill sysinfo struct with swap statistics
si_swapinfo
Check if pages are resident in memory
sys_mincore
Advanced Configuration and Power Interface
ACPI
SLUB slab allocator implementation
mm/slub.c
SLAB allocator implementation
mm/slab.c
input_handler
Performance monitoring event descriptor
perf_event
Submit I/O requests to block devices
submit_bio
NVMe block driver request queue handler
nvme_queue_rq
XFS filesystem file operations
xfs_file_operations
Common entry point for both prctl and syscall
do_seccomp
BPF syscall - load and run eBPF programs
__sys_bpf
Trace event descriptor for ftrace
trace_event
Video for Linux version 2
V4L2
drivers/media/mouse/
Allocate virtually contiguous memory
vmalloc
Allocate a virtual address range for vmalloc
alloc_vmap_area
NVMe
NVMe
Create an epoll file descriptor for I/O event notification
sys_epoll_create
Initialize a fanotify notification group
sys_fanotify_init
Asynchronous I/O interface
io_uring
Change the root filesystem
sys_pivot_root
Change root directory
sys_chroot
Create a directory relative to a directory fd
sys_mkdirat
Change current working directory
sys_chdir
Apply advisory lock on an open file
sys_flock
Supervisor Mode Access Prevention - protects user pages from kernel access
smap.h
Minor device registration for misc character devices
miscdevice
Log:
About
Splitting the Kernel
referers
comments
more ...
Navigation
Mouse:
Drag - pan
Wheel - zoom,
Items - links
Keyboard:
PgDn, PgUp - zoom
arrows - pan
SVG
Poster
Tapestry