成员类型 | 成员名 | 功能说明(内核选项) |
unsigned long | flags | 描述物理页状态的标志 |
联合体-缓存页(page cache)和匿名页(anonymous page) | ||
struct list_head | lru | 次级联合体-pageout链,page out,即将页面写入磁盘的过程,该过程使用LRU算法(least recently Used) |
void * | __filler | 次级联合体-不可回收的LRU链节点:总是偶数,消除尾页(negate pagetail) |
unsigned int | mlock_count | 次级联合体-不可回收的LRU链节点:记录被锁定(mlock)的页面数量 |
struct list_head | buddy_list | 次级联合体-伙伴系统空闲链挂接点 |
struct list_head | pcp_list | 次级联合体-PCP空闲链挂接点(per-cpu page allocator) |
struct address_space * | mapping | 低位清零,表示页映射到inode,并且指针指向address_space;低位置位,表示匿名映射,指向anon_vma |
pgoff_t | index | 页面在内存映射中的偏移 |
unsigned long | private | 私有映射的隐性数据(opaque data),如果是私有页,通常用作缓存头;如果是交换页,用作swp_entry_t;如果是伙伴系统页,用于指示阶数 |
联合体-网络栈使用的页面池(page_pool) | ||
unsigned long | pp_magic | 魔数,避免回收不是从页面池分配的页面 |
struct page_pool * | pp | 指向页面池描述符 |
unsigned long | _pp_mapping_pad | 保留字段 |
unsigned long | dma_addr | DMA地址 |
unsigned long | dma_addr_upper | 次级联合体-DMA地址高32位(32位系统,而又需要64位DMA地址) |
atomic_long_t | pp_frag_count | 次级联合体-页面池碎片页面计数(frag page) |
联合体-复合页尾页(Tail pages of compound page) | ||
unsigned long | compound_head | 复合页中首页的物理地址,bit0为1,用作尾页标志 |
unsigned char | compound_dtor | 析构函数索引号,复合页第一个尾页有效,当释放复合页时,调用该函数执行回收清理 |
unsigned char | compound_order | 复合页大小的阶次,仅第一个尾页有效 |
atomic_t | compound_mapcount | 复合页映射计数(应用空间) |
atomic_t | compound_pincount | 复合页固定计数(pin) |
unsigned int | compound_nr | 复合页大小(1 << compound_order)(CONFIG_64BIT) |
联合体-复合页第二尾页(Second tail page of compound page) | ||
unsigned long | _compound_pad_1 | 保留字段 |
unsigned long | _compound_pad_2 | 保留字段 |
struct list_head | deferred_list | 延迟释放页面链挂接点 |
联合体-页表页(Page table pages) | ||
unsigned long | _pt_pad_1 | 保留字段 |
pgtable_t | pmd_huge_pte | 大页表条目,由->plt保护 |
unsigned long | _pt_pad_2 | 保留字段 |
struct mm_struct * | pt_mm | 次级联合体-X86架构使用,指向内存描述符(mm_struct) |
atomic_t | pt_frag_refcount | 次级联合体-PowerPC架构使用,碎片引用计数 |
spinlock_t * | ptl | 页表锁,用户并发访问页表(ALLOC_SPLIT_PTLOCKS) |
spinlock_t | ptl | !ALLOC_SPLIT_PTLOCKS |
联合体-内存设备页(ZONE_DEVICE pages ) | ||
struct dev_pagemap * | pgmap | 指向设备页面映射描述符,描述内存设备页面的映射 |
void * | zone_device_data | 指向内存设备数据 |
联合体-RCU头 | ||
struct rcu_head | rcu_head | RCU挂接点,可通过该节点释放页面 |
联合体2 | ||
atomic_t | _mapcount | 记录页面的内存映射计数(应用空间) |
unsigned int | page_type | 页面类型 |
atomic_t | _refcount | 页面引用计数 |
unsigned long | memcg_data | 用于存储与内存控制组(memory control group)相关的信息。Memcg是Linux内核中一种可以限制进程或容器使用内存量的机制(CONFIG_MEMCG) |
void * | virtual | 内核空间对应的虚拟地址(WANT_PAGE_VIRTUAL) |
struct page * | kmsan_shadow | KMSAN是一种内存错误检测工具,用于检测和报告内核中的各种内存错误,例如读取未初始化的内存、使用已被释放的内存等(CONFIG_KMSAN,Kernel Memory Sanitizer) |
struct page * | kmsan_origin | (CONFIG_KMSAN) |
int | _last_cpupid | 最后一个使用页面的CPU ID,用于在系统调试时跟踪页面的使用情况(LAST_CPUPID_NOT_IN_PAGE_FLAGS) |
07-31
2740