cregit-Linux how code gets into the kernel

Release 4.7 include/linux/page_ext.h

Directory: include/linux
#ifndef __LINUX_PAGE_EXT_H

#define __LINUX_PAGE_EXT_H

#include <linux/types.h>
#include <linux/stacktrace.h>

struct pglist_data;

struct page_ext_operations {
	
bool (*need)(void);
	
void (*init)(void);
};

#ifdef CONFIG_PAGE_EXTENSION

/*
 * page_ext->flags bits:
 *
 * PAGE_EXT_DEBUG_POISON is set for poisoned pages. This is used to
 * implement generic debug pagealloc feature. The pages are filled with
 * poison patterns and set this flag after free_pages(). The poisoned
 * pages are verified whether the patterns are not corrupted and clear
 * the flag before alloc_pages().
 */


enum page_ext_flags {
	
PAGE_EXT_DEBUG_POISON,		/* Page is poisoned */
	
PAGE_EXT_DEBUG_GUARD,
	
PAGE_EXT_OWNER,
#if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT)
	
PAGE_EXT_YOUNG,
	
PAGE_EXT_IDLE,
#endif
};

/*
 * Page Extension can be considered as an extended mem_map.
 * A page_ext page is associated with every page descriptor. The
 * page_ext helps us add more information about the page.
 * All page_ext are allocated at boot or memory hotplug event,
 * then the page_ext for pfn always exists.
 */

struct page_ext {
	
unsigned long flags;
#ifdef CONFIG_PAGE_OWNER
	
unsigned int order;
	
gfp_t gfp_mask;
	
unsigned int nr_entries;
	
int last_migrate_reason;
	
unsigned long trace_entries[8];
#endif
};

extern void pgdat_page_ext_init(struct pglist_data *pgdat);

#ifdef CONFIG_SPARSEMEM

static inline void page_ext_init_flatmem(void) { }

Contributors

PersonTokensPropCommitsCommitProp
joonsoo kimjoonsoo kim8100.00%1100.00%
Total8100.00%1100.00%

extern void page_ext_init(void); #else extern void page_ext_init_flatmem(void);
static inline void page_ext_init(void) { }

Contributors

PersonTokensPropCommitsCommitProp
joonsoo kimjoonsoo kim8100.00%1100.00%
Total8100.00%1100.00%

#endif struct page_ext *lookup_page_ext(struct page *page); #else /* !CONFIG_PAGE_EXTENSION */ struct page_ext;
static inline void pgdat_page_ext_init(struct pglist_data *pgdat) { }

Contributors

PersonTokensPropCommitsCommitProp
joonsoo kimjoonsoo kim11100.00%1100.00%
Total11100.00%1100.00%


static inline struct page_ext *lookup_page_ext(struct page *page) { return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
joonsoo kimjoonsoo kim17100.00%1100.00%
Total17100.00%1100.00%


static inline void page_ext_init(void) { }

Contributors

PersonTokensPropCommitsCommitProp
joonsoo kimjoonsoo kim8100.00%1100.00%
Total8100.00%1100.00%


static inline void page_ext_init_flatmem(void) { }

Contributors

PersonTokensPropCommitsCommitProp
joonsoo kimjoonsoo kim8100.00%1100.00%
Total8100.00%1100.00%

#endif /* CONFIG_PAGE_EXTENSION */ #endif /* __LINUX_PAGE_EXT_H */

Overall Contributors

PersonTokensPropCommitsCommitProp
joonsoo kimjoonsoo kim19688.29%350.00%
vladimir davydovvladimir davydov209.01%116.67%
vlastimil babkavlastimil babka31.35%116.67%
sergei rogachevsergei rogachev31.35%116.67%
Total222100.00%6100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}