mm: Define MAP_SYNC and VM_SYNC flags
Define new MAP_SYNC flag and corresponding VMA VM_SYNC flag. As the MAP_SYNC flag is not part of LEGACY_MAP_MASK, currently it will be refused by all MAP_SHARED_VALIDATE map attempts and silently ignored for everything else. Reviewed-by: Ross Zwisler <ross.zwisler@linux.intel.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Jan Kara <jack@suse.cz> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
Родитель
f5b7b74876
Коммит
b6fb293f24
|
@ -664,6 +664,7 @@ static void show_smap_vma_flags(struct seq_file *m, struct vm_area_struct *vma)
|
|||
[ilog2(VM_ACCOUNT)] = "ac",
|
||||
[ilog2(VM_NORESERVE)] = "nr",
|
||||
[ilog2(VM_HUGETLB)] = "ht",
|
||||
[ilog2(VM_SYNC)] = "sf",
|
||||
[ilog2(VM_ARCH_1)] = "ar",
|
||||
[ilog2(VM_WIPEONFORK)] = "wf",
|
||||
[ilog2(VM_DONTDUMP)] = "dd",
|
||||
|
|
|
@ -189,6 +189,7 @@ extern unsigned int kobjsize(const void *objp);
|
|||
#define VM_ACCOUNT 0x00100000 /* Is a VM accounted object */
|
||||
#define VM_NORESERVE 0x00200000 /* should the VM suppress accounting */
|
||||
#define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
|
||||
#define VM_SYNC 0x00800000 /* Synchronous page faults */
|
||||
#define VM_ARCH_1 0x01000000 /* Architecture-specific flag */
|
||||
#define VM_WIPEONFORK 0x02000000 /* Wipe VMA contents in child. */
|
||||
#define VM_DONTDUMP 0x04000000 /* Do not include in the core dump */
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
/*
|
||||
* Arrange for legacy / undefined architecture specific flags to be
|
||||
* ignored by default in LEGACY_MAP_MASK.
|
||||
* ignored by mmap handling code.
|
||||
*/
|
||||
#ifndef MAP_32BIT
|
||||
#define MAP_32BIT 0
|
||||
|
@ -23,6 +23,9 @@
|
|||
#ifndef MAP_UNINITIALIZED
|
||||
#define MAP_UNINITIALIZED 0
|
||||
#endif
|
||||
#ifndef MAP_SYNC
|
||||
#define MAP_SYNC 0
|
||||
#endif
|
||||
|
||||
/*
|
||||
* The historical set of flags that all mmap implementations implicitly
|
||||
|
@ -126,7 +129,8 @@ calc_vm_flag_bits(unsigned long flags)
|
|||
{
|
||||
return _calc_vm_trans(flags, MAP_GROWSDOWN, VM_GROWSDOWN ) |
|
||||
_calc_vm_trans(flags, MAP_DENYWRITE, VM_DENYWRITE ) |
|
||||
_calc_vm_trans(flags, MAP_LOCKED, VM_LOCKED );
|
||||
_calc_vm_trans(flags, MAP_LOCKED, VM_LOCKED ) |
|
||||
_calc_vm_trans(flags, MAP_SYNC, VM_SYNC );
|
||||
}
|
||||
|
||||
unsigned long vm_commit_limit(void);
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#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 */
|
||||
#define MAP_SYNC 0x80000 /* perform synchronous page faults for the mapping */
|
||||
|
||||
/* Bits [26:31] are reserved, see mman-common.h for MAP_HUGETLB usage */
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче