1 /* $OpenBSD: uvm_fault.h,v 1.16 2020/11/06 11:52:39 mpi Exp $ */ 2 /* $NetBSD: uvm_fault.h,v 1.14 2000/06/26 14:21:17 mrg Exp $ */ 3 4 /* 5 * Copyright (c) 1997 Charles D. Cranor and Washington University. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * 28 * from: Id: uvm_fault.h,v 1.1.2.2 1997/12/08 16:07:12 chuck Exp 29 */ 30 31 #ifndef _UVM_UVM_FAULT_H_ 32 #define _UVM_UVM_FAULT_H_ 33 34 /* 35 * fault types 36 */ 37 38 #define VM_FAULT_INVALID ((vm_fault_t) 0x0) /* invalid mapping */ 39 #define VM_FAULT_PROTECT ((vm_fault_t) 0x1) /* protection */ 40 #define VM_FAULT_WIRE ((vm_fault_t) 0x2) /* wire mapping */ 41 42 /* 43 * fault data structures 44 */ 45 46 /* 47 * uvm_faultinfo: to load one of these fill in all orig_* fields and 48 * then call uvmfault_lookup on it. 49 */ 50 51 52 struct uvm_faultinfo { 53 vm_map_t orig_map; /* IN: original map */ 54 vaddr_t orig_rvaddr; /* IN: original rounded VA */ 55 vsize_t orig_size; /* IN: original size of interest */ 56 vm_map_t map; /* map (could be a submap) */ 57 unsigned int mapv; /* map's version number */ 58 vm_map_entry_t entry; /* map entry (from 'map') */ 59 vsize_t size; /* size of interest */ 60 }; 61 62 #ifdef _KERNEL 63 64 /* 65 * fault prototypes 66 */ 67 68 void uvmfault_init(void); 69 70 boolean_t uvmfault_lookup(struct uvm_faultinfo *, boolean_t); 71 boolean_t uvmfault_relock(struct uvm_faultinfo *); 72 void uvmfault_unlockall(struct uvm_faultinfo *, struct vm_amap *, 73 struct uvm_object *); 74 int uvmfault_anonget(struct uvm_faultinfo *, struct vm_amap *, 75 struct vm_anon *); 76 77 int uvm_fault_wire(vm_map_t, vaddr_t, vaddr_t, vm_prot_t); 78 void uvm_fault_unwire(vm_map_t, vaddr_t, vaddr_t); 79 void uvm_fault_unwire_locked(vm_map_t, vaddr_t, vaddr_t); 80 81 #endif /* _KERNEL */ 82 83 #endif /* _UVM_UVM_FAULT_H_ */ 84