vm_fault.c (98304) | vm_fault.c (98849) |
---|---|
1/* 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * Copyright (c) 1994 John S. Dyson 5 * All rights reserved. 6 * Copyright (c) 1994 David Greenman 7 * All rights reserved. 8 * --- 52 unchanged lines hidden (view full) --- 61 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 62 * School of Computer Science 63 * Carnegie Mellon University 64 * Pittsburgh PA 15213-3890 65 * 66 * any improvements or extensions that they make and grant Carnegie the 67 * rights to redistribute these changes. 68 * | 1/* 2 * Copyright (c) 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * Copyright (c) 1994 John S. Dyson 5 * All rights reserved. 6 * Copyright (c) 1994 David Greenman 7 * All rights reserved. 8 * --- 52 unchanged lines hidden (view full) --- 61 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 62 * School of Computer Science 63 * Carnegie Mellon University 64 * Pittsburgh PA 15213-3890 65 * 66 * any improvements or extensions that they make and grant Carnegie the 67 * rights to redistribute these changes. 68 * |
69 * $FreeBSD: head/sys/vm/vm_fault.c 98304 2002-06-16 20:42:29Z alc $ | 69 * $FreeBSD: head/sys/vm/vm_fault.c 98849 2002-06-26 03:37:47Z ken $ |
70 */ 71 72/* 73 * Page fault handling module. 74 */ 75#include <sys/param.h> 76#include <sys/systm.h> 77#include <sys/kernel.h> --- 228 unchanged lines hidden (view full) --- 306 } 307 308 /* 309 * See if page is resident 310 */ 311 fs.m = vm_page_lookup(fs.object, fs.pindex); 312 if (fs.m != NULL) { 313 int queue, s; | 70 */ 71 72/* 73 * Page fault handling module. 74 */ 75#include <sys/param.h> 76#include <sys/systm.h> 77#include <sys/kernel.h> --- 228 unchanged lines hidden (view full) --- 306 } 307 308 /* 309 * See if page is resident 310 */ 311 fs.m = vm_page_lookup(fs.object, fs.pindex); 312 if (fs.m != NULL) { 313 int queue, s; |
314 315 /* 316 * check for page-based copy on write 317 */ 318 319 if ((fs.m->cow) && 320 (fault_type & VM_PROT_WRITE)) { 321 s = splvm(); 322 vm_page_cowfault(fs.m); 323 splx(s); 324 unlock_things(&fs); 325 goto RetryFault; 326 } 327 |
|
314 /* 315 * Wait/Retry if the page is busy. We have to do this 316 * if the page is busy via either PG_BUSY or 317 * vm_page_t->busy because the vm_pager may be using 318 * vm_page_t->busy for pageouts ( and even pageins if 319 * it is the vnode pager ), and we could end up trying 320 * to pagein and pageout the same page simultaneously. 321 * --- 923 unchanged lines hidden --- | 328 /* 329 * Wait/Retry if the page is busy. We have to do this 330 * if the page is busy via either PG_BUSY or 331 * vm_page_t->busy because the vm_pager may be using 332 * vm_page_t->busy for pageouts ( and even pageins if 333 * it is the vnode pager ), and we could end up trying 334 * to pagein and pageout the same page simultaneously. 335 * --- 923 unchanged lines hidden --- |