Deleted Added
full compact
vm_mmap.c (281776) vm_mmap.c (284665)
1/*-
2 * Copyright (c) 1988 University of Utah.
3 * Copyright (c) 1991, 1993
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Systems Programming Group of the University of Utah Computer
8 * Science Department.

--- 27 unchanged lines hidden (view full) ---

36 * @(#)vm_mmap.c 8.4 (Berkeley) 1/12/94
37 */
38
39/*
40 * Mapped file (mmap) interface to VM
41 */
42
43#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1988 University of Utah.
3 * Copyright (c) 1991, 1993
4 * The Regents of the University of California. All rights reserved.
5 *
6 * This code is derived from software contributed to Berkeley by
7 * the Systems Programming Group of the University of Utah Computer
8 * Science Department.

--- 27 unchanged lines hidden (view full) ---

36 * @(#)vm_mmap.c 8.4 (Berkeley) 1/12/94
37 */
38
39/*
40 * Mapped file (mmap) interface to VM
41 */
42
43#include <sys/cdefs.h>
44__FBSDID("$FreeBSD: stable/10/sys/vm/vm_mmap.c 281776 2015-04-20 17:36:43Z alc $");
44__FBSDID("$FreeBSD: stable/10/sys/vm/vm_mmap.c 284665 2015-06-21 06:28:26Z trasz $");
45
46#include "opt_compat.h"
47#include "opt_hwpmc_hooks.h"
48
49#include <sys/param.h>
50#include <sys/systm.h>
51#include <sys/capsicum.h>
52#include <sys/kernel.h>

--- 1037 unchanged lines hidden (view full) ---

1090 if (nsize > lim_cur(proc, RLIMIT_MEMLOCK)) {
1091 PROC_UNLOCK(proc);
1092 return (ENOMEM);
1093 }
1094 PROC_UNLOCK(proc);
1095 if (npages + cnt.v_wire_count > vm_page_max_wired)
1096 return (EAGAIN);
1097#ifdef RACCT
45
46#include "opt_compat.h"
47#include "opt_hwpmc_hooks.h"
48
49#include <sys/param.h>
50#include <sys/systm.h>
51#include <sys/capsicum.h>
52#include <sys/kernel.h>

--- 1037 unchanged lines hidden (view full) ---

1090 if (nsize > lim_cur(proc, RLIMIT_MEMLOCK)) {
1091 PROC_UNLOCK(proc);
1092 return (ENOMEM);
1093 }
1094 PROC_UNLOCK(proc);
1095 if (npages + cnt.v_wire_count > vm_page_max_wired)
1096 return (EAGAIN);
1097#ifdef RACCT
1098 PROC_LOCK(proc);
1099 error = racct_set(proc, RACCT_MEMLOCK, nsize);
1100 PROC_UNLOCK(proc);
1101 if (error != 0)
1102 return (ENOMEM);
1098 if (racct_enable) {
1099 PROC_LOCK(proc);
1100 error = racct_set(proc, RACCT_MEMLOCK, nsize);
1101 PROC_UNLOCK(proc);
1102 if (error != 0)
1103 return (ENOMEM);
1104 }
1103#endif
1104 error = vm_map_wire(map, start, end,
1105 VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
1106#ifdef RACCT
1105#endif
1106 error = vm_map_wire(map, start, end,
1107 VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
1108#ifdef RACCT
1107 if (error != KERN_SUCCESS) {
1109 if (racct_enable && error != KERN_SUCCESS) {
1108 PROC_LOCK(proc);
1109 racct_set(proc, RACCT_MEMLOCK,
1110 ptoa(pmap_wired_count(map->pmap)));
1111 PROC_UNLOCK(proc);
1112 }
1113#endif
1114 return (error == KERN_SUCCESS ? 0 : ENOMEM);
1115}

--- 31 unchanged lines hidden (view full) ---

1147 PROC_LOCK(td->td_proc);
1148 if (map->size > lim_cur(td->td_proc, RLIMIT_MEMLOCK)) {
1149 PROC_UNLOCK(td->td_proc);
1150 return (ENOMEM);
1151 }
1152 PROC_UNLOCK(td->td_proc);
1153 }
1154#ifdef RACCT
1110 PROC_LOCK(proc);
1111 racct_set(proc, RACCT_MEMLOCK,
1112 ptoa(pmap_wired_count(map->pmap)));
1113 PROC_UNLOCK(proc);
1114 }
1115#endif
1116 return (error == KERN_SUCCESS ? 0 : ENOMEM);
1117}

--- 31 unchanged lines hidden (view full) ---

1149 PROC_LOCK(td->td_proc);
1150 if (map->size > lim_cur(td->td_proc, RLIMIT_MEMLOCK)) {
1151 PROC_UNLOCK(td->td_proc);
1152 return (ENOMEM);
1153 }
1154 PROC_UNLOCK(td->td_proc);
1155 }
1156#ifdef RACCT
1155 PROC_LOCK(td->td_proc);
1156 error = racct_set(td->td_proc, RACCT_MEMLOCK, map->size);
1157 PROC_UNLOCK(td->td_proc);
1158 if (error != 0)
1159 return (ENOMEM);
1157 if (racct_enable) {
1158 PROC_LOCK(td->td_proc);
1159 error = racct_set(td->td_proc, RACCT_MEMLOCK, map->size);
1160 PROC_UNLOCK(td->td_proc);
1161 if (error != 0)
1162 return (ENOMEM);
1163 }
1160#endif
1161
1162 if (uap->how & MCL_FUTURE) {
1163 vm_map_lock(map);
1164 vm_map_modflags(map, MAP_WIREFUTURE, 0);
1165 vm_map_unlock(map);
1166 error = 0;
1167 }

--- 5 unchanged lines hidden (view full) ---

1173 * from mlockall(). vm_map_wire() will wire pages, by
1174 * calling vm_fault_wire() for each page in the region.
1175 */
1176 error = vm_map_wire(map, vm_map_min(map), vm_map_max(map),
1177 VM_MAP_WIRE_USER|VM_MAP_WIRE_HOLESOK);
1178 error = (error == KERN_SUCCESS ? 0 : EAGAIN);
1179 }
1180#ifdef RACCT
1164#endif
1165
1166 if (uap->how & MCL_FUTURE) {
1167 vm_map_lock(map);
1168 vm_map_modflags(map, MAP_WIREFUTURE, 0);
1169 vm_map_unlock(map);
1170 error = 0;
1171 }

--- 5 unchanged lines hidden (view full) ---

1177 * from mlockall(). vm_map_wire() will wire pages, by
1178 * calling vm_fault_wire() for each page in the region.
1179 */
1180 error = vm_map_wire(map, vm_map_min(map), vm_map_max(map),
1181 VM_MAP_WIRE_USER|VM_MAP_WIRE_HOLESOK);
1182 error = (error == KERN_SUCCESS ? 0 : EAGAIN);
1183 }
1184#ifdef RACCT
1181 if (error != KERN_SUCCESS) {
1185 if (racct_enable && error != KERN_SUCCESS) {
1182 PROC_LOCK(td->td_proc);
1183 racct_set(td->td_proc, RACCT_MEMLOCK,
1184 ptoa(pmap_wired_count(map->pmap)));
1185 PROC_UNLOCK(td->td_proc);
1186 }
1187#endif
1188
1189 return (error);

--- 25 unchanged lines hidden (view full) ---

1215 vm_map_lock(map);
1216 vm_map_modflags(map, 0, MAP_WIREFUTURE);
1217 vm_map_unlock(map);
1218
1219 /* Forcibly unwire all pages. */
1220 error = vm_map_unwire(map, vm_map_min(map), vm_map_max(map),
1221 VM_MAP_WIRE_USER|VM_MAP_WIRE_HOLESOK);
1222#ifdef RACCT
1186 PROC_LOCK(td->td_proc);
1187 racct_set(td->td_proc, RACCT_MEMLOCK,
1188 ptoa(pmap_wired_count(map->pmap)));
1189 PROC_UNLOCK(td->td_proc);
1190 }
1191#endif
1192
1193 return (error);

--- 25 unchanged lines hidden (view full) ---

1219 vm_map_lock(map);
1220 vm_map_modflags(map, 0, MAP_WIREFUTURE);
1221 vm_map_unlock(map);
1222
1223 /* Forcibly unwire all pages. */
1224 error = vm_map_unwire(map, vm_map_min(map), vm_map_max(map),
1225 VM_MAP_WIRE_USER|VM_MAP_WIRE_HOLESOK);
1226#ifdef RACCT
1223 if (error == KERN_SUCCESS) {
1227 if (racct_enable && error == KERN_SUCCESS) {
1224 PROC_LOCK(td->td_proc);
1225 racct_set(td->td_proc, RACCT_MEMLOCK, 0);
1226 PROC_UNLOCK(td->td_proc);
1227 }
1228#endif
1229
1230 return (error);
1231}

--- 27 unchanged lines hidden (view full) ---

1259 last = addr + size;
1260 start = trunc_page(addr);
1261 end = round_page(last);
1262 if (last < addr || end < addr)
1263 return (EINVAL);
1264 error = vm_map_unwire(&td->td_proc->p_vmspace->vm_map, start, end,
1265 VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
1266#ifdef RACCT
1228 PROC_LOCK(td->td_proc);
1229 racct_set(td->td_proc, RACCT_MEMLOCK, 0);
1230 PROC_UNLOCK(td->td_proc);
1231 }
1232#endif
1233
1234 return (error);
1235}

--- 27 unchanged lines hidden (view full) ---

1263 last = addr + size;
1264 start = trunc_page(addr);
1265 end = round_page(last);
1266 if (last < addr || end < addr)
1267 return (EINVAL);
1268 error = vm_map_unwire(&td->td_proc->p_vmspace->vm_map, start, end,
1269 VM_MAP_WIRE_USER | VM_MAP_WIRE_NOHOLES);
1270#ifdef RACCT
1267 if (error == KERN_SUCCESS) {
1271 if (racct_enable && error == KERN_SUCCESS) {
1268 PROC_LOCK(td->td_proc);
1269 map = &td->td_proc->p_vmspace->vm_map;
1270 racct_set(td->td_proc, RACCT_MEMLOCK,
1271 ptoa(pmap_wired_count(map->pmap)));
1272 PROC_UNLOCK(td->td_proc);
1273 }
1274#endif
1275 return (error == KERN_SUCCESS ? 0 : ENOMEM);

--- 421 unchanged lines hidden ---
1272 PROC_LOCK(td->td_proc);
1273 map = &td->td_proc->p_vmspace->vm_map;
1274 racct_set(td->td_proc, RACCT_MEMLOCK,
1275 ptoa(pmap_wired_count(map->pmap)));
1276 PROC_UNLOCK(td->td_proc);
1277 }
1278#endif
1279 return (error == KERN_SUCCESS ? 0 : ENOMEM);

--- 421 unchanged lines hidden ---