vm_map.c (253636) | vm_map.c (254025) |
---|---|
1/*- 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * The Mach Operating System project at Carnegie-Mellon University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 49 unchanged lines hidden (view full) --- 58 * rights to redistribute these changes. 59 */ 60 61/* 62 * Virtual memory mapping module. 63 */ 64 65#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * This code is derived from software contributed to Berkeley by 6 * The Mach Operating System project at Carnegie-Mellon University. 7 * 8 * Redistribution and use in source and binary forms, with or without --- 49 unchanged lines hidden (view full) --- 58 * rights to redistribute these changes. 59 */ 60 61/* 62 * Virtual memory mapping module. 63 */ 64 65#include <sys/cdefs.h> |
66__FBSDID("$FreeBSD: head/sys/vm/vm_map.c 253636 2013-07-25 03:48:37Z kientzle $"); | 66__FBSDID("$FreeBSD: head/sys/vm/vm_map.c 254025 2013-08-07 06:21:20Z jeff $"); |
67 68#include <sys/param.h> 69#include <sys/systm.h> 70#include <sys/kernel.h> 71#include <sys/ktr.h> 72#include <sys/lock.h> 73#include <sys/mutex.h> 74#include <sys/proc.h> --- 117 unchanged lines hidden (view full) --- 192#else 193 NULL, 194#endif 195 vm_map_zinit, vm_map_zfini, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); 196 uma_prealloc(mapzone, MAX_KMAP); 197 kmapentzone = uma_zcreate("KMAP ENTRY", sizeof(struct vm_map_entry), 198 NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 199 UMA_ZONE_MTXCLASS | UMA_ZONE_VM); | 67 68#include <sys/param.h> 69#include <sys/systm.h> 70#include <sys/kernel.h> 71#include <sys/ktr.h> 72#include <sys/lock.h> 73#include <sys/mutex.h> 74#include <sys/proc.h> --- 117 unchanged lines hidden (view full) --- 192#else 193 NULL, 194#endif 195 vm_map_zinit, vm_map_zfini, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); 196 uma_prealloc(mapzone, MAX_KMAP); 197 kmapentzone = uma_zcreate("KMAP ENTRY", sizeof(struct vm_map_entry), 198 NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 199 UMA_ZONE_MTXCLASS | UMA_ZONE_VM); |
200 uma_prealloc(kmapentzone, MAX_KMAPENT); | |
201 mapentzone = uma_zcreate("MAP ENTRY", sizeof(struct vm_map_entry), 202 NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); | 200 mapentzone = uma_zcreate("MAP ENTRY", sizeof(struct vm_map_entry), 201 NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); |
202 vmspace_zone = uma_zcreate("VMSPACE", sizeof(struct vmspace), NULL, 203#ifdef INVARIANTS 204 vmspace_zdtor, 205#else 206 NULL, 207#endif 208 vmspace_zinit, vmspace_zfini, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); |
|
203} 204 205static void 206vmspace_zfini(void *mem, int size) 207{ 208 struct vmspace *vm; 209 210 vm = (struct vmspace *)mem; --- 83 unchanged lines hidden (view full) --- 294 vm->vm_dsize = 0; 295 vm->vm_ssize = 0; 296 vm->vm_taddr = 0; 297 vm->vm_daddr = 0; 298 vm->vm_maxsaddr = 0; 299 return (vm); 300} 301 | 209} 210 211static void 212vmspace_zfini(void *mem, int size) 213{ 214 struct vmspace *vm; 215 216 vm = (struct vmspace *)mem; --- 83 unchanged lines hidden (view full) --- 300 vm->vm_dsize = 0; 301 vm->vm_ssize = 0; 302 vm->vm_taddr = 0; 303 vm->vm_daddr = 0; 304 vm->vm_maxsaddr = 0; 305 return (vm); 306} 307 |
302void 303vm_init2(void) 304{ 305 uma_zone_reserve_kva(kmapentzone, lmin(cnt.v_page_count, 306 (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / PAGE_SIZE) / 8 + 307 maxproc * 2 + maxfiles); 308 vmspace_zone = uma_zcreate("VMSPACE", sizeof(struct vmspace), NULL, 309#ifdef INVARIANTS 310 vmspace_zdtor, 311#else 312 NULL, 313#endif 314 vmspace_zinit, vmspace_zfini, UMA_ALIGN_PTR, UMA_ZONE_NOFREE); 315} 316 | |
317static void 318vmspace_container_reset(struct proc *p) 319{ 320 321#ifdef RACCT 322 PROC_LOCK(p); 323 racct_set(p, RACCT_DATA, 0); 324 racct_set(p, RACCT_STACK, 0); --- 1139 unchanged lines hidden (view full) --- 1464 return (KERN_NO_SPACE); 1465 } 1466 switch (find_space) { 1467 case VMFS_ALIGNED_SPACE: 1468 case VMFS_OPTIMAL_SPACE: 1469 pmap_align_superpage(object, offset, addr, 1470 length); 1471 break; | 308static void 309vmspace_container_reset(struct proc *p) 310{ 311 312#ifdef RACCT 313 PROC_LOCK(p); 314 racct_set(p, RACCT_DATA, 0); 315 racct_set(p, RACCT_STACK, 0); --- 1139 unchanged lines hidden (view full) --- 1455 return (KERN_NO_SPACE); 1456 } 1457 switch (find_space) { 1458 case VMFS_ALIGNED_SPACE: 1459 case VMFS_OPTIMAL_SPACE: 1460 pmap_align_superpage(object, offset, addr, 1461 length); 1462 break; |
1472#ifdef VMFS_TLB_ALIGNED_SPACE 1473 case VMFS_TLB_ALIGNED_SPACE: 1474 pmap_align_tlb(addr); 1475 break; 1476#endif | |
1477 default: 1478 break; 1479 } 1480 1481 start = *addr; 1482 } 1483 result = vm_map_insert(map, object, offset, start, start + 1484 length, prot, max, cow); 1485 } while (result == KERN_NO_SPACE && (find_space == VMFS_ALIGNED_SPACE || | 1463 default: 1464 break; 1465 } 1466 1467 start = *addr; 1468 } 1469 result = vm_map_insert(map, object, offset, start, start + 1470 length, prot, max, cow); 1471 } while (result == KERN_NO_SPACE && (find_space == VMFS_ALIGNED_SPACE || |
1486#ifdef VMFS_TLB_ALIGNED_SPACE 1487 find_space == VMFS_TLB_ALIGNED_SPACE || 1488#endif | |
1489 find_space == VMFS_OPTIMAL_SPACE)); 1490 vm_map_unlock(map); 1491 return (result); 1492} 1493 1494/* 1495 * vm_map_simplify_entry: 1496 * --- 2672 unchanged lines hidden --- | 1472 find_space == VMFS_OPTIMAL_SPACE)); 1473 vm_map_unlock(map); 1474 return (result); 1475} 1476 1477/* 1478 * vm_map_simplify_entry: 1479 * --- 2672 unchanged lines hidden --- |