xref: /netbsd-src/sys/uvm/uvm_fault.h (revision 3ba477b15400d27bc1a6cf719738b659818242bd)
1*3ba477b1Schuck /*	$NetBSD: uvm_fault.h,v 1.20 2011/02/02 15:13:34 chuck Exp $	*/
2f2caacc7Smrg 
3f2caacc7Smrg /*
4f2caacc7Smrg  * Copyright (c) 1997 Charles D. Cranor and Washington University.
5f2caacc7Smrg  * All rights reserved.
6f2caacc7Smrg  *
7f2caacc7Smrg  * Redistribution and use in source and binary forms, with or without
8f2caacc7Smrg  * modification, are permitted provided that the following conditions
9f2caacc7Smrg  * are met:
10f2caacc7Smrg  * 1. Redistributions of source code must retain the above copyright
11f2caacc7Smrg  *    notice, this list of conditions and the following disclaimer.
12f2caacc7Smrg  * 2. Redistributions in binary form must reproduce the above copyright
13f2caacc7Smrg  *    notice, this list of conditions and the following disclaimer in the
14f2caacc7Smrg  *    documentation and/or other materials provided with the distribution.
15f2caacc7Smrg  *
16f2caacc7Smrg  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17f2caacc7Smrg  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18f2caacc7Smrg  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19f2caacc7Smrg  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20f2caacc7Smrg  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21f2caacc7Smrg  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22f2caacc7Smrg  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23f2caacc7Smrg  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24f2caacc7Smrg  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25f2caacc7Smrg  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
261f6b921cSmrg  *
271f6b921cSmrg  * from: Id: uvm_fault.h,v 1.1.2.2 1997/12/08 16:07:12 chuck Exp
28f2caacc7Smrg  */
29f2caacc7Smrg 
30021fdb64Sperry #ifndef _UVM_UVM_FAULT_H_
31021fdb64Sperry #define _UVM_UVM_FAULT_H_
32021fdb64Sperry 
33f2caacc7Smrg /*
34f2caacc7Smrg  * fault data structures
35f2caacc7Smrg  */
36f2caacc7Smrg 
37f2caacc7Smrg /*
38f2caacc7Smrg  * uvm_faultinfo: to load one of these fill in all orig_* fields and
39f2caacc7Smrg  * then call uvmfault_lookup on it.
40f2caacc7Smrg  */
41f2caacc7Smrg 
42f2caacc7Smrg 
43f2caacc7Smrg struct uvm_faultinfo {
44821ec03eSchs 	struct vm_map *orig_map;		/* IN: original map */
451b59a238Schuck 	vaddr_t orig_rvaddr;		/* IN: original rounded VA */
461b59a238Schuck 	vsize_t orig_size;		/* IN: original size of interest */
47821ec03eSchs 	struct vm_map *map;			/* map (could be a submap) */
481b59a238Schuck 	unsigned int mapv;		/* map's version number */
49821ec03eSchs 	struct vm_map_entry *entry;		/* map entry (from 'map') */
50a2dd74edSeeh 	vsize_t size;			/* size of interest */
51f2caacc7Smrg };
52f2caacc7Smrg 
53abb48c5bSthorpej #ifdef _KERNEL
54abb48c5bSthorpej 
55f2caacc7Smrg /*
56f2caacc7Smrg  * fault prototypes
57f2caacc7Smrg  */
58f2caacc7Smrg 
59325f5482Sjunyoung int uvmfault_anonget(struct uvm_faultinfo *, struct vm_amap *,
60325f5482Sjunyoung 		     struct vm_anon *);
61f2caacc7Smrg 
62e10923fdSdrochner int uvm_fault_wire(struct vm_map *, vaddr_t, vaddr_t, vm_prot_t, int);
63325f5482Sjunyoung void uvm_fault_unwire(struct vm_map *, vaddr_t, vaddr_t);
64325f5482Sjunyoung void uvm_fault_unwire_locked(struct vm_map *, vaddr_t, vaddr_t);
65f2caacc7Smrg 
66abb48c5bSthorpej #endif /* _KERNEL */
67abb48c5bSthorpej 
68021fdb64Sperry #endif /* _UVM_UVM_FAULT_H_ */
69