root/include/linux/vm_event_item.h
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef VM_EVENT_ITEM_H_INCLUDED
#define VM_EVENT_ITEM_H_INCLUDED

#include <linux/thread_info.h>

#ifdef CONFIG_ZONE_DMA
#define DMA_ZONE(xx) xx##_DMA,
#else
#define DMA_ZONE(xx)
#endif

#ifdef CONFIG_ZONE_DMA32
#define DMA32_ZONE(xx) xx##_DMA32,
#else
#define DMA32_ZONE(xx)
#endif

#ifdef CONFIG_HIGHMEM
#define HIGHMEM_ZONE(xx) xx##_HIGH,
#else
#define HIGHMEM_ZONE(xx)
#endif

#ifdef CONFIG_ZONE_DEVICE
#define DEVICE_ZONE(xx) xx##_DEVICE,
#else
#define DEVICE_ZONE(xx)
#endif

#define FOR_ALL_ZONES(xx) DMA_ZONE(xx) DMA32_ZONE(xx) xx##_NORMAL, \
        HIGHMEM_ZONE(xx) xx##_MOVABLE, DEVICE_ZONE(xx)

enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT,
                FOR_ALL_ZONES(PGALLOC)
                FOR_ALL_ZONES(ALLOCSTALL)
                FOR_ALL_ZONES(PGSCAN_SKIP)
                PGFREE, PGACTIVATE, PGDEACTIVATE, PGLAZYFREE,
                PGFAULT, PGMAJFAULT,
                PGLAZYFREED,
                PGREFILL,
                PGREUSE,
                PGSTEAL_KSWAPD,
                PGSTEAL_DIRECT,
                PGSTEAL_KHUGEPAGED,
                PGSTEAL_PROACTIVE,
                PGSCAN_KSWAPD,
                PGSCAN_DIRECT,
                PGSCAN_KHUGEPAGED,
                PGSCAN_PROACTIVE,
                PGSCAN_DIRECT_THROTTLE,
                PGSCAN_ANON,
                PGSCAN_FILE,
                PGSTEAL_ANON,
                PGSTEAL_FILE,
#ifdef CONFIG_NUMA
                PGSCAN_ZONE_RECLAIM_SUCCESS,
                PGSCAN_ZONE_RECLAIM_FAILED,
#endif
                PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL,
                KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY,
                PAGEOUTRUN, PGROTATED,
                DROP_PAGECACHE, DROP_SLAB,
                OOM_KILL,
#ifdef CONFIG_NUMA_BALANCING
                NUMA_PTE_UPDATES,
                NUMA_HUGE_PTE_UPDATES,
                NUMA_HINT_FAULTS,
                NUMA_HINT_FAULTS_LOCAL,
                NUMA_PAGE_MIGRATE,
#endif
#ifdef CONFIG_MIGRATION
                PGMIGRATE_SUCCESS, PGMIGRATE_FAIL,
                THP_MIGRATION_SUCCESS,
                THP_MIGRATION_FAIL,
                THP_MIGRATION_SPLIT,
#endif
#ifdef CONFIG_COMPACTION
                COMPACTMIGRATE_SCANNED, COMPACTFREE_SCANNED,
                COMPACTISOLATED,
                COMPACTSTALL, COMPACTFAIL, COMPACTSUCCESS,
                KCOMPACTD_WAKE,
                KCOMPACTD_MIGRATE_SCANNED, KCOMPACTD_FREE_SCANNED,
#endif
#ifdef CONFIG_HUGETLB_PAGE
                HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL,
#endif
#ifdef CONFIG_CMA
                CMA_ALLOC_SUCCESS,
                CMA_ALLOC_FAIL,
#endif
                UNEVICTABLE_PGCULLED,   /* culled to noreclaim list */
                UNEVICTABLE_PGSCANNED,  /* scanned for reclaimability */
                UNEVICTABLE_PGRESCUED,  /* rescued from noreclaim list */
                UNEVICTABLE_PGMLOCKED,
                UNEVICTABLE_PGMUNLOCKED,
                UNEVICTABLE_PGCLEARED,  /* on COW, page truncate */
                UNEVICTABLE_PGSTRANDED, /* unable to isolate on unlock */
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
                THP_FAULT_ALLOC,
                THP_FAULT_FALLBACK,
                THP_FAULT_FALLBACK_CHARGE,
                THP_COLLAPSE_ALLOC,
                THP_COLLAPSE_ALLOC_FAILED,
                THP_FILE_ALLOC,
                THP_FILE_FALLBACK,
                THP_FILE_FALLBACK_CHARGE,
                THP_FILE_MAPPED,
                THP_SPLIT_PAGE,
                THP_SPLIT_PAGE_FAILED,
                THP_DEFERRED_SPLIT_PAGE,
                THP_UNDERUSED_SPLIT_PAGE,
                THP_SPLIT_PMD,
                THP_SCAN_EXCEED_NONE_PTE,
                THP_SCAN_EXCEED_SWAP_PTE,
                THP_SCAN_EXCEED_SHARED_PTE,
#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD
                THP_SPLIT_PUD,
#endif
                THP_ZERO_PAGE_ALLOC,
                THP_ZERO_PAGE_ALLOC_FAILED,
                THP_SWPOUT,
                THP_SWPOUT_FALLBACK,
#endif
#ifdef CONFIG_BALLOON
                BALLOON_INFLATE,
                BALLOON_DEFLATE,
#ifdef CONFIG_BALLOON_MIGRATION
                BALLOON_MIGRATE,
#endif /* CONFIG_BALLOON_MIGRATION */
#endif /* CONFIG_BALLOON */
#ifdef CONFIG_DEBUG_TLBFLUSH
                NR_TLB_REMOTE_FLUSH,    /* cpu tried to flush others' tlbs */
                NR_TLB_REMOTE_FLUSH_RECEIVED,/* cpu received ipi for flush */
                NR_TLB_LOCAL_FLUSH_ALL,
                NR_TLB_LOCAL_FLUSH_ONE,
#endif /* CONFIG_DEBUG_TLBFLUSH */
#ifdef CONFIG_SWAP
                SWAP_RA,
                SWAP_RA_HIT,
                SWPIN_ZERO,
                SWPOUT_ZERO,
#ifdef CONFIG_KSM
                KSM_SWPIN_COPY,
#endif
#endif
#ifdef CONFIG_KSM
                COW_KSM,
#endif
#ifdef CONFIG_ZSWAP
                ZSWPIN,
                ZSWPOUT,
                ZSWPWB,
#endif
#ifdef CONFIG_X86
                DIRECT_MAP_LEVEL2_SPLIT,
                DIRECT_MAP_LEVEL3_SPLIT,
                DIRECT_MAP_LEVEL2_COLLAPSE,
                DIRECT_MAP_LEVEL3_COLLAPSE,
#endif
#ifdef CONFIG_PER_VMA_LOCK_STATS
                VMA_LOCK_SUCCESS,
                VMA_LOCK_ABORT,
                VMA_LOCK_RETRY,
                VMA_LOCK_MISS,
#endif
#ifdef CONFIG_DEBUG_STACK_USAGE
                KSTACK_1K,
#if THREAD_SIZE > 1024
                KSTACK_2K,
#endif
#if THREAD_SIZE > 2048
                KSTACK_4K,
#endif
#if THREAD_SIZE > 4096
                KSTACK_8K,
#endif
#if THREAD_SIZE > 8192
                KSTACK_16K,
#endif
#if THREAD_SIZE > 16384
                KSTACK_32K,
#endif
#if THREAD_SIZE > 32768
                KSTACK_64K,
#endif
#if THREAD_SIZE > 65536
                KSTACK_REST,
#endif
#endif /* CONFIG_DEBUG_STACK_USAGE */
                NR_VM_EVENT_ITEMS
};

#ifndef CONFIG_TRANSPARENT_HUGEPAGE
#define THP_FILE_ALLOC ({ BUILD_BUG(); 0; })
#define THP_FILE_FALLBACK ({ BUILD_BUG(); 0; })
#define THP_FILE_FALLBACK_CHARGE ({ BUILD_BUG(); 0; })
#define THP_FILE_MAPPED ({ BUILD_BUG(); 0; })
#endif

#endif          /* VM_EVENT_ITEM_H_INCLUDED */