Open-Source Wikis

/

Linux

/

Reference

/

Data models

torvalds/linux

Data models

A condensed reference of the major in-kernel objects and how they relate. Use this page as a "where to look" rather than a definition. Each link below points at the header where the structure is declared.

Process / thread

graph LR
    TASK[task_struct] -->|"->mm"| MM[mm_struct]
    TASK -->|"->files"| FILES[files_struct]
    TASK -->|"->fs"| FS[fs_struct]
    TASK -->|"->signal, ->sighand"| SIG[signal_struct, sighand_struct]
    TASK -->|"->cred"| CRED[cred]
    TASK -->|"->se / ->dl / ->rt"| SCHED[sched_entity / sched_dl_entity / sched_rt_entity]
    TASK -->|"->nsproxy"| NS[nsproxy]
    NS -->|"net/uts/ipc/pid/mnt/cgroup/time"| NSITEMS[per-namespace structs]
    MM --> VMA[vm_area_struct *]
    MM -->|maple tree| MT[mt_root]
    FILES --> FDT[fdtable]
    FDT --> FILE[struct file *]
Object Header Notes
task_struct include/linux/sched.h Thread descriptor; one per kernel thread or user thread.
mm_struct include/linux/mm_types.h Address space. Shared between threads of one process.
vm_area_struct include/linux/mm_types.h A contiguous virtual range with one set of permissions.
cred include/linux/cred.h uid/gid/caps and security blob.
signal_struct, sighand_struct include/linux/sched/signal.h Per-thread-group and per-thread-handler signal state.
nsproxy include/linux/nsproxy.h Per-process namespace bundle.
files_struct, fdtable include/linux/fdtable.h The file-descriptor table.
pid, pid_namespace include/linux/pid.h, include/linux/pid_namespace.h Numeric pid in a hierarchical pid namespace.

Filesystems / VFS

Object Header
super_block include/linux/fs.h
inode include/linux/fs.h
dentry include/linux/dcache.h
file include/linux/fs.h
address_space include/linux/fs.h
folio include/linux/mm_types.h
path include/linux/path.h
vfsmount include/linux/mount.h
file_system_type include/linux/fs.h

Operations vtables: super_operations, inode_operations, dentry_operations, file_operations, address_space_operations (all in include/linux/fs.h).

Block

Object Header
bio, bvec_iter include/linux/blk_types.h
request, request_queue include/linux/blkdev.h
gendisk, block_device include/linux/blkdev.h
blk_mq_tag_set, blk_mq_hw_ctx include/linux/blk-mq.h

Networking

Object Header
net_device include/linux/netdevice.h
sk_buff include/linux/skbuff.h
sock, socket, proto, proto_ops include/net/sock.h, include/linux/net.h
net (namespace) include/net/net_namespace.h
fib_table, fib_rules include/net/fib_rules.h
neighbour include/net/neighbour.h
inet_sock, tcp_sock, udp_sock include/net/inet_sock.h, tcp.h, udp.h

Device model

Object Header
device, device_driver, bus_type, class include/linux/device.h
kobject, kset, kref, kobj_type include/linux/kobject.h
pci_dev, pci_driver include/linux/pci.h
usb_device, usb_driver, usb_interface include/linux/usb.h
platform_device, platform_driver include/linux/platform_device.h

Synchronization

Primitive Header
spinlock_t, rwlock_t include/linux/spinlock.h
mutex include/linux/mutex.h
rw_semaphore include/linux/rwsem.h
seqlock_t, seqcount_t include/linux/seqlock.h
completion include/linux/completion.h
wait_queue_head_t, wait_event_* include/linux/wait.h
atomic_t, atomic64_t include/linux/atomic.h
refcount_t include/linux/refcount.h
RCU API include/linux/rcupdate.h

Memory

Object Header
page include/linux/mm_types.h
folio same
pgd_t, p4d_t, pud_t, pmd_t, pte_t arch/<arch>/include/asm/pgtable.h
kmem_cache include/linux/slab.h
mempool_t include/linux/mempool.h
iov_iter include/linux/uio.h
gfp_t include/linux/gfp.h

Cgroups

Object Header
cgroup_subsys_state include/linux/cgroup-defs.h
cgroup, cgroup_root same
css_set, cgrp_cset_link same
cgroup_subsys same

BPF

Object Header
bpf_prog, bpf_insn include/linux/bpf.h, include/linux/filter.h
bpf_map include/linux/bpf.h
bpf_link include/linux/bpf.h
BTF types include/linux/btf.h

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Data models – Linux wiki | Factory