Upon further investigation, in uvm_map_pageable(), entry->protection is the

right access_type to pass to uvm_fault_wire().  This way, if the entry has
VM_PROT_WRITE, and the entry is marked COW, the copy will happen immediately
in uvm_fault(), as if the access were performed.
This commit is contained in:
thorpej 1999-05-26 23:53:48 +00:00
parent beb8d06638
commit 80de1e9903

View File

@ -1,4 +1,4 @@
/* $NetBSD: uvm_map.c,v 1.45 1999/05/26 19:16:36 thorpej Exp $ */
/* $NetBSD: uvm_map.c,v 1.46 1999/05/26 23:53:48 thorpej Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@ -2169,14 +2169,8 @@ uvm_map_pageable(map, start, end, new_pageable)
if (rv) {
entry->wired_count--;
} else if (entry->wired_count == 1) {
/*
* XXXTHORPEJ: VM_PROT_NONE. What about COW
* entries? Should we enter with max_protection
* so that we're guaranteed not even mod/ref
* emulation faults will occur?
*/
rv = uvm_fault_wire(map, entry->start, entry->end,
VM_PROT_NONE);
entry->protection);
if (rv) {
failed = entry->start;
entry->wired_count--;