summaryrefslogtreecommitdiffstats
path: root/sys/vm/vm_map.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/vm/vm_map.c')
-rw-r--r--sys/vm/vm_map.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c
index eaa65f7..a1f422d3 100644
--- a/sys/vm/vm_map.c
+++ b/sys/vm/vm_map.c
@@ -460,6 +460,9 @@ vm_map_insert(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
KASSERT(object == NULL,
("vm_map_insert: paradoxical MAP_NOFAULT request"));
}
+ if (cow & MAP_DISABLE_SYNCER)
+ protoeflags |= MAP_ENTRY_NOSYNC;
+
if (object) {
/*
* When object is non-NULL, it could be shared with another
@@ -539,13 +542,15 @@ vm_map_insert(vm_map_t map, vm_object_t object, vm_ooffset_t offset,
* Update the free space hint
*/
if ((map->first_free == prev_entry) &&
- (prev_entry->end >= new_entry->start))
+ (prev_entry->end >= new_entry->start)) {
map->first_free = new_entry;
+ }
- if (cow & (MAP_PREFAULT|MAP_PREFAULT_PARTIAL))
+ if (cow & (MAP_PREFAULT|MAP_PREFAULT_PARTIAL)) {
pmap_object_init_pt(map->pmap, start,
object, OFF_TO_IDX(offset), end - start,
cow & MAP_PREFAULT_PARTIAL);
+ }
return (KERN_SUCCESS);
}
@@ -1026,6 +1031,8 @@ vm_map_madvise(map, start, end, behav)
case MADV_NORMAL:
case MADV_SEQUENTIAL:
case MADV_RANDOM:
+ case MADV_NOSYNC:
+ case MADV_AUTOSYNC:
modify_map = 1;
vm_map_lock(map);
break;
@@ -1077,6 +1084,12 @@ vm_map_madvise(map, start, end, behav)
case MADV_RANDOM:
vm_map_entry_set_behavior(current, MAP_ENTRY_BEHAV_RANDOM);
break;
+ case MADV_NOSYNC:
+ current->eflags |= MAP_ENTRY_NOSYNC;
+ break;
+ case MADV_AUTOSYNC:
+ current->eflags &= ~MAP_ENTRY_NOSYNC;
+ break;
default:
break;
}
OpenPOWER on IntegriCloud