55 lines
1.5 KiB
C
55 lines
1.5 KiB
C
|
#ifndef _LINUX_MMZONE_H
|
||
|
#define _LINUX_MMZONE_H
|
||
|
|
||
|
#include <linux/spinlock.h>
|
||
|
#include <linux/list.h>
|
||
|
#include <linux/wait.h>
|
||
|
#include <linux/bitops.h>
|
||
|
#include <linux/atomic.h>
|
||
|
|
||
|
/* Free memory management - zoned buddy allocator. */
|
||
|
#ifndef CONFIG_FORCE_MAX_ZONEORDER
|
||
|
#define MAX_ORDER 11
|
||
|
#else
|
||
|
#define MAX_ORDER CONFIG_FORCE_MAX_ZONEORDER
|
||
|
#endif
|
||
|
#define MAX_ORDER_NR_PAGES (1 << (MAX_ORDER - 1))
|
||
|
|
||
|
/*
|
||
|
* PAGE_ALLOC_COSTLY_ORDER is the order at which allocations are deemed
|
||
|
* costly to service. That is between allocation orders which should
|
||
|
* coalesce naturally under reasonable reclaim pressure and those which
|
||
|
* will not.
|
||
|
*/
|
||
|
#define PAGE_ALLOC_COSTLY_ORDER 3
|
||
|
|
||
|
enum {
|
||
|
MIGRATE_UNMOVABLE,
|
||
|
MIGRATE_MOVABLE,
|
||
|
MIGRATE_RECLAIMABLE,
|
||
|
MIGRATE_PCPTYPES, /* the number of types on the pcp lists */
|
||
|
MIGRATE_HIGHATOMIC = MIGRATE_PCPTYPES,
|
||
|
#ifdef CONFIG_CMA
|
||
|
/*
|
||
|
* MIGRATE_CMA migration type is designed to mimic the way
|
||
|
* ZONE_MOVABLE works. Only movable pages can be allocated
|
||
|
* from MIGRATE_CMA pageblocks and page allocator never
|
||
|
* implicitly change migration type of MIGRATE_CMA pageblock.
|
||
|
*
|
||
|
* The way to use it is to change migratetype of a range of
|
||
|
* pageblocks to MIGRATE_CMA which can be done by
|
||
|
* __free_pageblock_cma() function. What is important though
|
||
|
* is that a range of pageblocks must be aligned to
|
||
|
* MAX_ORDER_NR_PAGES should biggest page be bigger then
|
||
|
* a single pageblock.
|
||
|
*/
|
||
|
MIGRATE_CMA,
|
||
|
#endif
|
||
|
#ifdef CONFIG_MEMORY_ISOLATION
|
||
|
MIGRATE_ISOLATE, /* can't allocate from here */
|
||
|
#endif
|
||
|
MIGRATE_TYPES
|
||
|
};
|
||
|
|
||
|
#endif /* _LINUX_MMZONE_H */
|