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 logicalfile systems abstract devicesand HID class drivers HI peripheralsdevice drivers networkdevice drivers devicecontrol storagedrivers physical memoryoperations device accessand bus drivers user spaceinterfaces hardwareinterfaces files & directoriesaccess 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 networkstorage memorymapping security Decouple abstraction from implementation so that the two can vary independently bridges debugging page cache socketsplice 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 callsand system files cross-functionalmodules 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 interruptcontroller Universal Serial Bus USBcontroller Peripheral Component Interconnect PCIcontroller 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 functionimplementations boot, shutdownpower 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