XenevaOS
Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions | Variables
mmzone.h File Reference
#include <linux/spinlock.h>
#include <linux/list.h>
#include <linux/list_nulls.h>
#include <linux/wait.h>
#include <linux/bitops.h>
#include <linux/cache.h>
#include <linux/threads.h>
#include <linux/numa.h>
#include <linux/init.h>
#include <linux/seqlock.h>
#include <linux/nodemask.h>
#include <linux/pageblock-flags.h>
#include <linux/page-flags-layout.h>
#include <linux/atomic.h>
#include <linux/mm_types.h>
#include <linux/page-flags.h>
#include <linux/local_lock.h>
#include <linux/zswap.h>
#include <linux/sizes.h>
#include <asm/page.h>
#include <linux/memory_hotplug.h>
Include dependency graph for mmzone.h:

Go to the source code of this file.

Classes

struct  free_area
 
struct  lruvec
 
struct  per_cpu_pages
 
struct  per_cpu_zonestat
 
struct  per_cpu_nodestat
 
struct  zone
 
struct  zoneref
 
struct  zonelist
 
struct  pglist_data
 

Macros

#define MAX_PAGE_ORDER   10
 
#define MAX_ORDER_NR_PAGES   (1 << MAX_PAGE_ORDER)
 
#define IS_MAX_ORDER_ALIGNED(pfn)   IS_ALIGNED(pfn, MAX_ORDER_NR_PAGES)
 
#define NR_PAGE_ORDERS   (MAX_PAGE_ORDER + 1)
 
#define PAGE_BLOCK_MAX_ORDER   MAX_PAGE_ORDER
 
#define PAGE_ALLOC_COSTLY_ORDER   3
 
#define MAX_FOLIO_ORDER   MAX_PAGE_ORDER
 
#define MAX_FOLIO_NR_PAGES   (1UL << MAX_FOLIO_ORDER)
 
#define MAX_FOLIO_VMEMMAP_ALIGN
 
#define VMEMMAP_TAIL_MIN_ORDER   (ilog2(2 * PAGE_SIZE / sizeof(struct page)))
 
#define __NR_VMEMMAP_TAILS   (MAX_FOLIO_ORDER - VMEMMAP_TAIL_MIN_ORDER + 1)
 
#define NR_VMEMMAP_TAILS   (__NR_VMEMMAP_TAILS > 0 ? __NR_VMEMMAP_TAILS : 0)
 
#define is_migrate_cma(migratetype)   false
 
#define is_migrate_cma_page(_page)   false
 
#define is_migrate_cma_folio(folio, pfn)   false
 
#define for_each_free_list(list, zone, order)
 
#define get_pageblock_migratetype(page)    get_pfnblock_migratetype(page, page_to_pfn(page))
 
#define folio_migratetype(folio)    get_pageblock_migratetype(&folio->page)
 
#define NR_VM_NUMA_EVENT_ITEMS   0
 
#define LRU_BASE   0
 
#define LRU_ACTIVE   1
 
#define LRU_FILE   2
 
#define for_each_lru(lru)   for (lru = 0; lru < NR_LRU_LISTS; lru++)
 
#define for_each_evictable_lru(lru)   for (lru = 0; lru <= LRU_ACTIVE_FILE; lru++)
 
#define WORKINGSET_ANON   0
 
#define WORKINGSET_FILE   1
 
#define ANON_AND_FILE   2
 
#define MIN_NR_GENS   2U
 
#define MAX_NR_GENS   4U
 
#define MAX_NR_TIERS   4U
 
#define LRU_GEN_MASK   ((BIT(LRU_GEN_WIDTH) - 1) << LRU_GEN_PGOFF)
 
#define LRU_REFS_MASK   ((BIT(LRU_REFS_WIDTH) - 1) << LRU_REFS_PGOFF)
 
#define LRU_REFS_FLAGS   (LRU_REFS_MASK | BIT(PG_referenced))
 
#define ISOLATE_ASYNC_MIGRATE   ((__force isolate_mode_t)0x4)
 
#define ISOLATE_UNEVICTABLE   ((__force isolate_mode_t)0x8)
 
#define NR_PCP_THP   0
 
#define NR_LOWORDER_PCP_LISTS   (MIGRATE_PCPTYPES * (PAGE_ALLOC_COSTLY_ORDER + 1))
 
#define NR_PCP_LISTS   (NR_LOWORDER_PCP_LISTS + NR_PCP_THP)
 
#define PCPF_PREV_FREE_HIGH_ORDER   BIT(0)
 
#define PCPF_FREE_HIGH_BATCH   BIT(1)
 
#define ASYNC_AND_SYNC   2
 
#define SECTIONS_PGOFF   ((sizeof(unsigned long)*8) - SECTIONS_WIDTH)
 
#define NODES_PGOFF   (SECTIONS_PGOFF - NODES_WIDTH)
 
#define ZONES_PGOFF   (NODES_PGOFF - ZONES_WIDTH)
 
#define LAST_CPUPID_PGOFF   (ZONES_PGOFF - LAST_CPUPID_WIDTH)
 
#define KASAN_TAG_PGOFF   (LAST_CPUPID_PGOFF - KASAN_TAG_WIDTH)
 
#define LRU_GEN_PGOFF   (KASAN_TAG_PGOFF - LRU_GEN_WIDTH)
 
#define LRU_REFS_PGOFF   (LRU_GEN_PGOFF - LRU_REFS_WIDTH)
 
#define SECTIONS_PGSHIFT   (SECTIONS_PGOFF * (SECTIONS_WIDTH != 0))
 
#define NODES_PGSHIFT   (NODES_PGOFF * (NODES_WIDTH != 0))
 
#define ZONES_PGSHIFT   (ZONES_PGOFF * (ZONES_WIDTH != 0))
 
#define LAST_CPUPID_PGSHIFT   (LAST_CPUPID_PGOFF * (LAST_CPUPID_WIDTH != 0))
 
#define KASAN_TAG_PGSHIFT   (KASAN_TAG_PGOFF * (KASAN_TAG_WIDTH != 0))
 
#define ZONEID_SHIFT   (NODES_SHIFT + ZONES_SHIFT)
 
#define ZONEID_PGOFF
 
#define ZONEID_PGSHIFT   (ZONEID_PGOFF * (ZONEID_SHIFT != 0))
 
#define ZONES_MASK   ((1UL << ZONES_WIDTH) - 1)
 
#define NODES_MASK   ((1UL << NODES_WIDTH) - 1)
 
#define SECTIONS_MASK   ((1UL << SECTIONS_WIDTH) - 1)
 
#define LAST_CPUPID_MASK   ((1UL << LAST_CPUPID_SHIFT) - 1)
 
#define KASAN_TAG_MASK   ((1UL << KASAN_TAG_WIDTH) - 1)
 
#define ZONEID_MASK   ((1UL << ZONEID_SHIFT) - 1)
 
#define DEF_PRIORITY   12
 
#define MAX_ZONES_PER_ZONELIST   (MAX_NUMNODES * MAX_NR_ZONES)
 
#define node_present_pages(nid)   (NODE_DATA(nid)->node_present_pages)
 
#define node_spanned_pages(nid)   (NODE_DATA(nid)->node_spanned_pages)
 
#define node_start_pfn(nid)   (NODE_DATA(nid)->node_start_pfn)
 
#define node_end_pfn(nid)   pgdat_end_pfn(NODE_DATA(nid))
 
#define zone_idx(zone)   ((zone) - (zone)->zone_pgdat->node_zones)
 
#define for_each_online_pgdat(pgdat)
 
#define for_each_zone(zone)
 
#define for_each_populated_zone(zone)
 
#define for_each_zone_zonelist_nodemask(zone, z, zlist, highidx, nodemask)
 
#define for_next_zone_zonelist_nodemask(zone, z, highidx, nodemask)
 
#define for_each_zone_zonelist(zone, z, zlist, highidx)    for_each_zone_zonelist_nodemask(zone, z, zlist, highidx, NULL)
 
#define sparse_vmemmap_init_nid_early(_nid)   do {} while (0)
 
#define sparse_vmemmap_init_nid_late(_nid)   do {} while (0)
 
#define pfn_in_present_section   pfn_valid
 
#define for_each_valid_pfn(_pfn, _start_pfn, _end_pfn)
 

Typedefs

typedef unsigned __bitwise isolate_mode_t
 
typedef struct pglist_data pg_data_t
 

Enumerations

enum  migratetype {
  MIGRATE_UNMOVABLE , MIGRATE_MOVABLE , MIGRATE_RECLAIMABLE , MIGRATE_PCPTYPES ,
  MIGRATE_HIGHATOMIC = MIGRATE_PCPTYPES , __MIGRATE_TYPE_END = MIGRATE_HIGHATOMIC , MIGRATE_TYPES
}
 
enum  zone_stat_item {
  NR_FREE_PAGES , NR_FREE_PAGES_BLOCKS , NR_ZONE_LRU_BASE , NR_ZONE_INACTIVE_ANON = NR_ZONE_LRU_BASE ,
  NR_ZONE_ACTIVE_ANON , NR_ZONE_INACTIVE_FILE , NR_ZONE_ACTIVE_FILE , NR_ZONE_UNEVICTABLE ,
  NR_ZONE_WRITE_PENDING , NR_MLOCK , NR_FREE_CMA_PAGES , NR_VM_ZONE_STAT_ITEMS
}
 
enum  node_stat_item {
  NR_LRU_BASE , NR_INACTIVE_ANON = NR_LRU_BASE , NR_ACTIVE_ANON , NR_INACTIVE_FILE ,
  NR_ACTIVE_FILE , NR_UNEVICTABLE , NR_SLAB_RECLAIMABLE_B , NR_SLAB_UNRECLAIMABLE_B ,
  NR_ISOLATED_ANON , NR_ISOLATED_FILE , WORKINGSET_NODES , WORKINGSET_REFAULT_BASE ,
  WORKINGSET_REFAULT_ANON = WORKINGSET_REFAULT_BASE , WORKINGSET_REFAULT_FILE , WORKINGSET_ACTIVATE_BASE , WORKINGSET_ACTIVATE_ANON = WORKINGSET_ACTIVATE_BASE ,
  WORKINGSET_ACTIVATE_FILE , WORKINGSET_RESTORE_BASE , WORKINGSET_RESTORE_ANON = WORKINGSET_RESTORE_BASE , WORKINGSET_RESTORE_FILE ,
  WORKINGSET_NODERECLAIM , NR_ANON_MAPPED , NR_FILE_MAPPED , NR_FILE_PAGES ,
  NR_FILE_DIRTY , NR_WRITEBACK , NR_SHMEM , NR_SHMEM_THPS ,
  NR_SHMEM_PMDMAPPED , NR_FILE_THPS , NR_FILE_PMDMAPPED , NR_ANON_THPS ,
  NR_VMSCAN_WRITE , NR_VMSCAN_IMMEDIATE , NR_DIRTIED , NR_WRITTEN ,
  NR_THROTTLED_WRITTEN , NR_KERNEL_MISC_RECLAIMABLE , NR_FOLL_PIN_ACQUIRED , NR_FOLL_PIN_RELEASED ,
  NR_VMALLOC , NR_KERNEL_STACK_KB , NR_PAGETABLE , NR_SECONDARY_PAGETABLE ,
  PGDEMOTE_KSWAPD , PGDEMOTE_DIRECT , PGDEMOTE_KHUGEPAGED , PGDEMOTE_PROACTIVE ,
  PGSTEAL_KSWAPD , PGSTEAL_DIRECT , PGSTEAL_KHUGEPAGED , PGSTEAL_PROACTIVE ,
  PGSTEAL_ANON , PGSTEAL_FILE , PGSCAN_KSWAPD , PGSCAN_DIRECT ,
  PGSCAN_KHUGEPAGED , PGSCAN_PROACTIVE , PGSCAN_ANON , PGSCAN_FILE ,
  PGREFILL , NR_BALLOON_PAGES , NR_KERNEL_FILE_PAGES , NR_GPU_ACTIVE ,
  NR_GPU_RECLAIM , NR_VM_NODE_STAT_ITEMS
}
 
enum  lru_list {
  LRU_INACTIVE_ANON = LRU_BASE , LRU_ACTIVE_ANON = LRU_BASE + LRU_ACTIVE , LRU_INACTIVE_FILE = LRU_BASE + LRU_FILE , LRU_ACTIVE_FILE = LRU_BASE + LRU_FILE + LRU_ACTIVE ,
  LRU_UNEVICTABLE , NR_LRU_LISTS
}
 
enum  vmscan_throttle_state {
  VMSCAN_THROTTLE_WRITEBACK , VMSCAN_THROTTLE_ISOLATED , VMSCAN_THROTTLE_NOPROGRESS , VMSCAN_THROTTLE_CONGESTED ,
  NR_VMSCAN_THROTTLE
}
 
enum  lruvec_flags { LRUVEC_CGROUP_CONGESTED , LRUVEC_NODE_CONGESTED }
 
enum  zone_watermarks {
  WMARK_MIN , WMARK_LOW , WMARK_HIGH , WMARK_PROMO ,
  NR_WMARK
}
 
enum  zone_type { ZONE_NORMAL , ZONE_MOVABLE , __MAX_NR_ZONES }
 
enum  pgdat_flags { PGDAT_WRITEBACK , PGDAT_RECLAIM_LOCKED }
 
enum  zone_flags { ZONE_BOOSTED_WATERMARK , ZONE_RECLAIM_ACTIVE , ZONE_BELOW_HIGH }
 
enum  { ZONELIST_FALLBACK , MAX_ZONELISTS }
 
enum  kswapd_clear_hopeless_reason { KSWAPD_CLEAR_HOPELESS_OTHER = 0 , KSWAPD_CLEAR_HOPELESS_KSWAPD , KSWAPD_CLEAR_HOPELESS_DIRECT , KSWAPD_CLEAR_HOPELESS_PCP }
 
enum  meminit_context { MEMINIT_EARLY , MEMINIT_HOTPLUG }
 

Functions

void build_all_zonelists (pg_data_t *pgdat)
 
bool __zone_watermark_ok (struct zone *z, unsigned int order, unsigned long mark, int highest_zoneidx, unsigned int alloc_flags, long free_pages)
 
bool zone_watermark_ok (struct zone *z, unsigned int order, unsigned long mark, int highest_zoneidx, unsigned int alloc_flags)
 
void wakeup_kswapd (struct zone *zone, gfp_t gfp_mask, int order, enum zone_type highest_zoneidx)
 
void kswapd_try_clear_hopeless (struct pglist_data *pgdat, unsigned int order, int highest_zoneidx)
 
void kswapd_clear_hopeless (pg_data_t *pgdat, enum kswapd_clear_hopeless_reason reason)
 
bool kswapd_test_hopeless (pg_data_t *pgdat)
 
void init_currently_empty_zone (struct zone *zone, unsigned long start_pfn, unsigned long size)
 
void lruvec_init (struct lruvec *lruvec)
 
bool has_managed_zone (enum zone_type zone)
 
struct pglist_data * first_online_pgdat (void)
 
struct pglist_data * next_online_pgdat (struct pglist_data *pgdat)
 
struct zone * next_zone (struct zone *zone)
 
struct zoneref * __next_zones_zonelist (struct zoneref *z, enum zone_type highest_zoneidx, nodemask_t *nodes)
 

Variables

const char *const migratetype_names [MIGRATE_TYPES]
 
int page_group_by_mobility_disabled
 
struct per_cpu_pages ____cacheline_aligned_in_smp
 
struct zone ____cacheline_internodealigned_in_smp
 
struct page * mem_map
 
int movable_zone
 
struct pglist_data contig_page_data
 

Macro Definition Documentation

◆ __NR_VMEMMAP_TAILS

#define __NR_VMEMMAP_TAILS   (MAX_FOLIO_ORDER - VMEMMAP_TAIL_MIN_ORDER + 1)

◆ ANON_AND_FILE

#define ANON_AND_FILE   2

◆ ASYNC_AND_SYNC

#define ASYNC_AND_SYNC   2

◆ DEF_PRIORITY

#define DEF_PRIORITY   12

◆ folio_migratetype

#define folio_migratetype (   folio)     get_pageblock_migratetype(&folio->page)

◆ for_each_evictable_lru

#define for_each_evictable_lru (   lru)    for (lru = 0; lru <= LRU_ACTIVE_FILE; lru++)

◆ for_each_free_list

#define for_each_free_list (   list,
  zone,
  order 
)
Value:
for (order = 0; order < NR_PAGE_ORDERS; order++) \
for (unsigned int __type = 0; \
__type < MIGRATE_TYPES && \
(list = &(zone)->free_area[order].free_list[__type], 1); \
__type++)
XEProcessList * list
Definition main.cpp:27
#define NR_PAGE_ORDERS
Definition mmzone.h:39
@ MIGRATE_TYPES
Definition mmzone.h:143
Definition mmzone.h:195
Definition mmzone.h:968

◆ for_each_lru

#define for_each_lru (   lru)    for (lru = 0; lru < NR_LRU_LISTS; lru++)

◆ for_each_online_pgdat

#define for_each_online_pgdat (   pgdat)
Value:
for (pgdat = first_online_pgdat(); \
pgdat; \
pgdat = next_online_pgdat(pgdat))
struct pglist_data * first_online_pgdat(void)
struct pglist_data * next_online_pgdat(struct pglist_data *pgdat)

for_each_online_pgdat - helper macro to iterate over all online nodes @pgdat: pointer to a pg_data_t variable

◆ for_each_populated_zone

#define for_each_populated_zone (   zone)
Value:
for (zone = (first_online_pgdat())->node_zones; \
zone; \
if (!populated_zone(zone)) \
; /* do nothing */ \
else
struct zone * next_zone(struct zone *zone)

◆ for_each_valid_pfn

#define for_each_valid_pfn (   _pfn,
  _start_pfn,
  _end_pfn 
)
Value:
for ((_pfn) = (_start_pfn); (_pfn) < (_end_pfn); (_pfn)++) \
if (pfn_valid(_pfn))

◆ for_each_zone

#define for_each_zone (   zone)
Value:
for (zone = (first_online_pgdat())->node_zones; \
zone; \

for_each_zone - helper macro to iterate over all memory zones @zone: pointer to struct zone variable

The user only needs to declare the zone variable, for_each_zone fills it in.

◆ for_each_zone_zonelist

#define for_each_zone_zonelist (   zone,
  z,
  zlist,
  highidx 
)     for_each_zone_zonelist_nodemask(zone, z, zlist, highidx, NULL)

for_each_zone_zonelist - helper macro to iterate over valid zones in a zonelist at or below a given zone index @zone: The current zone in the iterator @z: The current pointer within zonelist->zones being iterated @zlist: The zonelist being iterated @highidx: The zone index of the highest zone to return

This iterator iterates though all zones at or below a given zone index.

◆ for_each_zone_zonelist_nodemask

#define for_each_zone_zonelist_nodemask (   zone,
  z,
  zlist,
  highidx,
  nodemask 
)
Value:
for (z = first_zones_zonelist(zlist, highidx, nodemask), zone = zonelist_zone(z); \
zone; \
z = next_zones_zonelist(++z, highidx, nodemask), \
zone = zonelist_zone(z))

for_each_zone_zonelist_nodemask - helper macro to iterate over valid zones in a zonelist at or below a given zone index and within a nodemask @zone: The current zone in the iterator @z: The current pointer within zonelist->_zonerefs being iterated @zlist: The zonelist being iterated @highidx: The zone index of the highest zone to return @nodemask: Nodemask allowed by the allocator

This iterator iterates though all zones at or below a given zone index and within a given nodemask

◆ for_next_zone_zonelist_nodemask

#define for_next_zone_zonelist_nodemask (   zone,
  z,
  highidx,
  nodemask 
)
Value:
for (zone = zonelist_zone(z); \
zone; \
z = next_zones_zonelist(++z, highidx, nodemask), \
zone = zonelist_zone(z))

◆ get_pageblock_migratetype

#define get_pageblock_migratetype (   page)     get_pfnblock_migratetype(page, page_to_pfn(page))

◆ IS_MAX_ORDER_ALIGNED

#define IS_MAX_ORDER_ALIGNED (   pfn)    IS_ALIGNED(pfn, MAX_ORDER_NR_PAGES)

◆ is_migrate_cma

#define is_migrate_cma (   migratetype)    false

◆ is_migrate_cma_folio

#define is_migrate_cma_folio (   folio,
  pfn 
)    false

◆ is_migrate_cma_page

#define is_migrate_cma_page (   _page)    false

◆ ISOLATE_ASYNC_MIGRATE

#define ISOLATE_ASYNC_MIGRATE   ((__force isolate_mode_t)0x4)

◆ ISOLATE_UNEVICTABLE

#define ISOLATE_UNEVICTABLE   ((__force isolate_mode_t)0x8)

◆ KASAN_TAG_MASK

#define KASAN_TAG_MASK   ((1UL << KASAN_TAG_WIDTH) - 1)

◆ KASAN_TAG_PGOFF

#define KASAN_TAG_PGOFF   (LAST_CPUPID_PGOFF - KASAN_TAG_WIDTH)

◆ KASAN_TAG_PGSHIFT

#define KASAN_TAG_PGSHIFT   (KASAN_TAG_PGOFF * (KASAN_TAG_WIDTH != 0))

◆ LAST_CPUPID_MASK

#define LAST_CPUPID_MASK   ((1UL << LAST_CPUPID_SHIFT) - 1)

◆ LAST_CPUPID_PGOFF

#define LAST_CPUPID_PGOFF   (ZONES_PGOFF - LAST_CPUPID_WIDTH)

◆ LAST_CPUPID_PGSHIFT

#define LAST_CPUPID_PGSHIFT   (LAST_CPUPID_PGOFF * (LAST_CPUPID_WIDTH != 0))

◆ LRU_ACTIVE

#define LRU_ACTIVE   1

◆ LRU_BASE

#define LRU_BASE   0

◆ LRU_FILE

#define LRU_FILE   2

◆ LRU_GEN_MASK

#define LRU_GEN_MASK   ((BIT(LRU_GEN_WIDTH) - 1) << LRU_GEN_PGOFF)

◆ LRU_GEN_PGOFF

#define LRU_GEN_PGOFF   (KASAN_TAG_PGOFF - LRU_GEN_WIDTH)

◆ LRU_REFS_FLAGS

#define LRU_REFS_FLAGS   (LRU_REFS_MASK | BIT(PG_referenced))

◆ LRU_REFS_MASK

#define LRU_REFS_MASK   ((BIT(LRU_REFS_WIDTH) - 1) << LRU_REFS_PGOFF)

◆ LRU_REFS_PGOFF

#define LRU_REFS_PGOFF   (LRU_GEN_PGOFF - LRU_REFS_WIDTH)

◆ MAX_FOLIO_NR_PAGES

#define MAX_FOLIO_NR_PAGES   (1UL << MAX_FOLIO_ORDER)

◆ MAX_FOLIO_ORDER

#define MAX_FOLIO_ORDER   MAX_PAGE_ORDER

◆ MAX_FOLIO_VMEMMAP_ALIGN

#define MAX_FOLIO_VMEMMAP_ALIGN
Value:
(IS_ENABLED(CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP) && \
is_power_of_2(sizeof(struct page)) ? \
MAX_FOLIO_NR_PAGES * sizeof(struct page) : 0)
#define IS_ENABLED(option)
Definition kconfig.h:80
#define MAX_FOLIO_NR_PAGES
Definition mmzone.h:97
Definition pagemap.h:38

◆ MAX_NR_GENS

#define MAX_NR_GENS   4U

◆ MAX_NR_TIERS

#define MAX_NR_TIERS   4U

◆ MAX_ORDER_NR_PAGES

#define MAX_ORDER_NR_PAGES   (1 << MAX_PAGE_ORDER)

◆ MAX_PAGE_ORDER

#define MAX_PAGE_ORDER   10

◆ MAX_ZONES_PER_ZONELIST

#define MAX_ZONES_PER_ZONELIST   (MAX_NUMNODES * MAX_NR_ZONES)

◆ MIN_NR_GENS

#define MIN_NR_GENS   2U

◆ node_end_pfn

#define node_end_pfn (   nid)    pgdat_end_pfn(NODE_DATA(nid))

◆ node_present_pages

#define node_present_pages (   nid)    (NODE_DATA(nid)->node_present_pages)

◆ node_spanned_pages

#define node_spanned_pages (   nid)    (NODE_DATA(nid)->node_spanned_pages)

◆ node_start_pfn

#define node_start_pfn (   nid)    (NODE_DATA(nid)->node_start_pfn)

◆ NODES_MASK

#define NODES_MASK   ((1UL << NODES_WIDTH) - 1)

◆ NODES_PGOFF

#define NODES_PGOFF   (SECTIONS_PGOFF - NODES_WIDTH)

◆ NODES_PGSHIFT

#define NODES_PGSHIFT   (NODES_PGOFF * (NODES_WIDTH != 0))

◆ NR_LOWORDER_PCP_LISTS

#define NR_LOWORDER_PCP_LISTS   (MIGRATE_PCPTYPES * (PAGE_ALLOC_COSTLY_ORDER + 1))

◆ NR_PAGE_ORDERS

#define NR_PAGE_ORDERS   (MAX_PAGE_ORDER + 1)

◆ NR_PCP_LISTS

#define NR_PCP_LISTS   (NR_LOWORDER_PCP_LISTS + NR_PCP_THP)

◆ NR_PCP_THP

#define NR_PCP_THP   0

◆ NR_VM_NUMA_EVENT_ITEMS

#define NR_VM_NUMA_EVENT_ITEMS   0

◆ NR_VMEMMAP_TAILS

#define NR_VMEMMAP_TAILS   (__NR_VMEMMAP_TAILS > 0 ? __NR_VMEMMAP_TAILS : 0)

◆ PAGE_ALLOC_COSTLY_ORDER

#define PAGE_ALLOC_COSTLY_ORDER   3

◆ PAGE_BLOCK_MAX_ORDER

#define PAGE_BLOCK_MAX_ORDER   MAX_PAGE_ORDER

◆ PCPF_FREE_HIGH_BATCH

#define PCPF_FREE_HIGH_BATCH   BIT(1)

◆ PCPF_PREV_FREE_HIGH_ORDER

#define PCPF_PREV_FREE_HIGH_ORDER   BIT(0)

◆ pfn_in_present_section

#define pfn_in_present_section   pfn_valid

◆ SECTIONS_MASK

#define SECTIONS_MASK   ((1UL << SECTIONS_WIDTH) - 1)

◆ SECTIONS_PGOFF

#define SECTIONS_PGOFF   ((sizeof(unsigned long)*8) - SECTIONS_WIDTH)

◆ SECTIONS_PGSHIFT

#define SECTIONS_PGSHIFT   (SECTIONS_PGOFF * (SECTIONS_WIDTH != 0))

◆ sparse_vmemmap_init_nid_early

#define sparse_vmemmap_init_nid_early (   _nid)    do {} while (0)

◆ sparse_vmemmap_init_nid_late

#define sparse_vmemmap_init_nid_late (   _nid)    do {} while (0)

◆ VMEMMAP_TAIL_MIN_ORDER

#define VMEMMAP_TAIL_MIN_ORDER   (ilog2(2 * PAGE_SIZE / sizeof(struct page)))

◆ WORKINGSET_ANON

#define WORKINGSET_ANON   0

◆ WORKINGSET_FILE

#define WORKINGSET_FILE   1

◆ zone_idx

#define zone_idx (   zone)    ((zone) - (zone)->zone_pgdat->node_zones)

◆ ZONEID_MASK

#define ZONEID_MASK   ((1UL << ZONEID_SHIFT) - 1)

◆ ZONEID_PGOFF

#define ZONEID_PGOFF
Value:
#define NODES_PGOFF
Definition mmzone.h:1237
#define ZONES_PGOFF
Definition mmzone.h:1238

◆ ZONEID_PGSHIFT

#define ZONEID_PGSHIFT   (ZONEID_PGOFF * (ZONEID_SHIFT != 0))

◆ ZONEID_SHIFT

#define ZONEID_SHIFT   (NODES_SHIFT + ZONES_SHIFT)

◆ ZONES_MASK

#define ZONES_MASK   ((1UL << ZONES_WIDTH) - 1)

◆ ZONES_PGOFF

#define ZONES_PGOFF   (NODES_PGOFF - ZONES_WIDTH)

◆ ZONES_PGSHIFT

#define ZONES_PGSHIFT   (ZONES_PGOFF * (ZONES_WIDTH != 0))

Typedef Documentation

◆ isolate_mode_t

typedef unsigned __bitwise isolate_mode_t

◆ pg_data_t

typedef struct pglist_data pg_data_t

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
ZONELIST_FALLBACK 
MAX_ZONELISTS 

◆ kswapd_clear_hopeless_reason

Enumerator
KSWAPD_CLEAR_HOPELESS_OTHER 
KSWAPD_CLEAR_HOPELESS_KSWAPD 
KSWAPD_CLEAR_HOPELESS_DIRECT 
KSWAPD_CLEAR_HOPELESS_PCP 

◆ lru_list

enum lru_list
Enumerator
LRU_INACTIVE_ANON 
LRU_ACTIVE_ANON 
LRU_INACTIVE_FILE 
LRU_ACTIVE_FILE 
LRU_UNEVICTABLE 
NR_LRU_LISTS 

◆ lruvec_flags

Enumerator
LRUVEC_CGROUP_CONGESTED 
LRUVEC_NODE_CONGESTED 

◆ meminit_context

Enumerator
MEMINIT_EARLY 
MEMINIT_HOTPLUG 

◆ migratetype

Enumerator
MIGRATE_UNMOVABLE 
MIGRATE_MOVABLE 
MIGRATE_RECLAIMABLE 
MIGRATE_PCPTYPES 
MIGRATE_HIGHATOMIC 
__MIGRATE_TYPE_END 
MIGRATE_TYPES 

◆ node_stat_item

Enumerator
NR_LRU_BASE 
NR_INACTIVE_ANON 
NR_ACTIVE_ANON 
NR_INACTIVE_FILE 
NR_ACTIVE_FILE 
NR_UNEVICTABLE 
NR_SLAB_RECLAIMABLE_B 
NR_SLAB_UNRECLAIMABLE_B 
NR_ISOLATED_ANON 
NR_ISOLATED_FILE 
WORKINGSET_NODES 
WORKINGSET_REFAULT_BASE 
WORKINGSET_REFAULT_ANON 
WORKINGSET_REFAULT_FILE 
WORKINGSET_ACTIVATE_BASE 
WORKINGSET_ACTIVATE_ANON 
WORKINGSET_ACTIVATE_FILE 
WORKINGSET_RESTORE_BASE 
WORKINGSET_RESTORE_ANON 
WORKINGSET_RESTORE_FILE 
WORKINGSET_NODERECLAIM 
NR_ANON_MAPPED 
NR_FILE_MAPPED 
NR_FILE_PAGES 
NR_FILE_DIRTY 
NR_WRITEBACK 
NR_SHMEM 
NR_SHMEM_THPS 
NR_SHMEM_PMDMAPPED 
NR_FILE_THPS 
NR_FILE_PMDMAPPED 
NR_ANON_THPS 
NR_VMSCAN_WRITE 
NR_VMSCAN_IMMEDIATE 
NR_DIRTIED 
NR_WRITTEN 
NR_THROTTLED_WRITTEN 
NR_KERNEL_MISC_RECLAIMABLE 
NR_FOLL_PIN_ACQUIRED 
NR_FOLL_PIN_RELEASED 
NR_VMALLOC 
NR_KERNEL_STACK_KB 
NR_PAGETABLE 
NR_SECONDARY_PAGETABLE 
PGDEMOTE_KSWAPD 
PGDEMOTE_DIRECT 
PGDEMOTE_KHUGEPAGED 
PGDEMOTE_PROACTIVE 
PGSTEAL_KSWAPD 
PGSTEAL_DIRECT 
PGSTEAL_KHUGEPAGED 
PGSTEAL_PROACTIVE 
PGSTEAL_ANON 
PGSTEAL_FILE 
PGSCAN_KSWAPD 
PGSCAN_DIRECT 
PGSCAN_KHUGEPAGED 
PGSCAN_PROACTIVE 
PGSCAN_ANON 
PGSCAN_FILE 
PGREFILL 
NR_BALLOON_PAGES 
NR_KERNEL_FILE_PAGES 
NR_GPU_ACTIVE 
NR_GPU_RECLAIM 
NR_VM_NODE_STAT_ITEMS 

◆ pgdat_flags

Enumerator
PGDAT_WRITEBACK 
PGDAT_RECLAIM_LOCKED 

◆ vmscan_throttle_state

Enumerator
VMSCAN_THROTTLE_WRITEBACK 
VMSCAN_THROTTLE_ISOLATED 
VMSCAN_THROTTLE_NOPROGRESS 
VMSCAN_THROTTLE_CONGESTED 
NR_VMSCAN_THROTTLE 

◆ zone_flags

enum zone_flags
Enumerator
ZONE_BOOSTED_WATERMARK 
ZONE_RECLAIM_ACTIVE 
ZONE_BELOW_HIGH 

◆ zone_stat_item

Enumerator
NR_FREE_PAGES 
NR_FREE_PAGES_BLOCKS 
NR_ZONE_LRU_BASE 
NR_ZONE_INACTIVE_ANON 
NR_ZONE_ACTIVE_ANON 
NR_ZONE_INACTIVE_FILE 
NR_ZONE_ACTIVE_FILE 
NR_ZONE_UNEVICTABLE 
NR_ZONE_WRITE_PENDING 
NR_MLOCK 
NR_FREE_CMA_PAGES 
NR_VM_ZONE_STAT_ITEMS 

◆ zone_type

enum zone_type
Enumerator
ZONE_NORMAL 
ZONE_MOVABLE 
__MAX_NR_ZONES 

◆ zone_watermarks

Enumerator
WMARK_MIN 
WMARK_LOW 
WMARK_HIGH 
WMARK_PROMO 
NR_WMARK 

Function Documentation

◆ __next_zones_zonelist()

struct zoneref * __next_zones_zonelist ( struct zoneref *  z,
enum zone_type  highest_zoneidx,
nodemask_t *  nodes 
)

◆ __zone_watermark_ok()

bool __zone_watermark_ok ( struct zone *  z,
unsigned int  order,
unsigned long  mark,
int  highest_zoneidx,
unsigned int  alloc_flags,
long  free_pages 
)

◆ build_all_zonelists()

void build_all_zonelists ( pg_data_t *  pgdat)

◆ first_online_pgdat()

struct pglist_data * first_online_pgdat ( void  )
extern

◆ has_managed_zone()

bool has_managed_zone ( enum zone_type  zone)

◆ init_currently_empty_zone()

void init_currently_empty_zone ( struct zone *  zone,
unsigned long  start_pfn,
unsigned long  size 
)
extern

◆ kswapd_clear_hopeless()

void kswapd_clear_hopeless ( pg_data_t *  pgdat,
enum kswapd_clear_hopeless_reason  reason 
)

◆ kswapd_test_hopeless()

bool kswapd_test_hopeless ( pg_data_t *  pgdat)

◆ kswapd_try_clear_hopeless()

void kswapd_try_clear_hopeless ( struct pglist_data *  pgdat,
unsigned int  order,
int  highest_zoneidx 
)

◆ lruvec_init()

void lruvec_init ( struct lruvec *  lruvec)
extern

◆ next_online_pgdat()

struct pglist_data * next_online_pgdat ( struct pglist_data *  pgdat)
extern

◆ next_zone()

struct zone * next_zone ( struct zone *  zone)
extern

◆ wakeup_kswapd()

void wakeup_kswapd ( struct zone *  zone,
gfp_t  gfp_mask,
int  order,
enum zone_type  highest_zoneidx 
)

◆ zone_watermark_ok()

bool zone_watermark_ok ( struct zone *  z,
unsigned int  order,
unsigned long  mark,
int  highest_zoneidx,
unsigned int  alloc_flags 
)

Variable Documentation

◆ ____cacheline_aligned_in_smp

struct per_cpu_pages ____cacheline_aligned_in_smp

◆ ____cacheline_internodealigned_in_smp

struct zone ____cacheline_internodealigned_in_smp

◆ contig_page_data

struct pglist_data contig_page_data
extern

◆ mem_map

struct page* mem_map
extern

◆ migratetype_names

const char* const migratetype_names[MIGRATE_TYPES]
extern

◆ movable_zone

int movable_zone
extern

◆ page_group_by_mobility_disabled

int page_group_by_mobility_disabled
extern