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