forked from Minki/linux
2c9faa7675
Add user space exported API definitions for 512KB, 1MB, 2MB, 8MB, 16MB, 1GB, 16GB non default huge page sizes to be used with mmap() system call. Signed-off-by: Anshuman Khandual <khandual@linux.vnet.ibm.com> [mpe: Reword the comment to emphasise that these are only needed to use the non-default huge page size, and updated the change log.] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
49 lines
2.1 KiB
C
49 lines
2.1 KiB
C
/*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*/
|
|
#ifndef _UAPI_ASM_POWERPC_MMAN_H
|
|
#define _UAPI_ASM_POWERPC_MMAN_H
|
|
|
|
#include <asm-generic/mman-common.h>
|
|
|
|
|
|
#define PROT_SAO 0x10 /* Strong Access Ordering */
|
|
|
|
#define MAP_RENAME MAP_ANONYMOUS /* In SunOS terminology */
|
|
#define MAP_NORESERVE 0x40 /* don't reserve swap pages */
|
|
#define MAP_LOCKED 0x80
|
|
|
|
#define MAP_GROWSDOWN 0x0100 /* stack-like segment */
|
|
#define MAP_DENYWRITE 0x0800 /* ETXTBSY */
|
|
#define MAP_EXECUTABLE 0x1000 /* mark it as an executable */
|
|
|
|
#define MCL_CURRENT 0x2000 /* lock all currently mapped pages */
|
|
#define MCL_FUTURE 0x4000 /* lock all additions to address space */
|
|
#define MCL_ONFAULT 0x8000 /* lock all pages that are faulted in */
|
|
|
|
#define MAP_POPULATE 0x8000 /* populate (prefault) pagetables */
|
|
#define MAP_NONBLOCK 0x10000 /* do not block on IO */
|
|
#define MAP_STACK 0x20000 /* give out an address that is best suited for process/thread stacks */
|
|
#define MAP_HUGETLB 0x40000 /* create a huge page mapping */
|
|
|
|
/*
|
|
* When MAP_HUGETLB is set, bits [26:31] of the flags argument to mmap(2),
|
|
* encode the log2 of the huge page size. A value of zero indicates that the
|
|
* default huge page size should be used. To use a non-default huge page size,
|
|
* one of these defines can be used, or the size can be encoded by hand. Note
|
|
* that on most systems only a subset, or possibly none, of these sizes will be
|
|
* available.
|
|
*/
|
|
#define MAP_HUGE_512KB (19 << MAP_HUGE_SHIFT) /* 512KB HugeTLB Page */
|
|
#define MAP_HUGE_1MB (20 << MAP_HUGE_SHIFT) /* 1MB HugeTLB Page */
|
|
#define MAP_HUGE_2MB (21 << MAP_HUGE_SHIFT) /* 2MB HugeTLB Page */
|
|
#define MAP_HUGE_8MB (23 << MAP_HUGE_SHIFT) /* 8MB HugeTLB Page */
|
|
#define MAP_HUGE_16MB (24 << MAP_HUGE_SHIFT) /* 16MB HugeTLB Page */
|
|
#define MAP_HUGE_1GB (30 << MAP_HUGE_SHIFT) /* 1GB HugeTLB Page */
|
|
#define MAP_HUGE_16GB (34 << MAP_HUGE_SHIFT) /* 16GB HugeTLB Page */
|
|
|
|
#endif /* _UAPI_ASM_POWERPC_MMAN_H */
|