FreeBSD/Linux Kernel Cross Reference
sys/vm/vm_kern.h
1 /*
2 * Mach Operating System
3 * Copyright (c) 1993,1991,1990,1989,1988,1987 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the
9 * software, derivative works or modified versions, and any portions
10 * thereof, and that both notices appear in supporting documentation.
11 *
12 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
13 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
14 * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
15 *
16 * Carnegie Mellon requests users of this software to return to
17 *
18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie Mellon
24 * the rights to redistribute these changes.
25 */
26 /*
27 * HISTORY
28 * $Log: vm_kern.h,v $
29 * Revision 2.11 93/11/17 18:54:40 dbg
30 * Conditionalized projected buffer support under NET_ATM.
31 * [93/09/10 dbg]
32 * Added ANSI function prototypes.
33 * [93/06/16 dbg]
34 *
35 * Revision 2.10 93/08/10 15:12:46 mrt
36 * Included support for projected buffers.
37 * [93/02/16 09:30:12 jcb]
38 *
39 * Revision 2.9 91/08/28 11:18:05 jsb
40 * Delete io_wire, io_unwire.
41 * [91/08/06 17:18:36 dlb]
42 *
43 * Add declarations for kmem_io_map_{copyout,deallocate}.
44 * [91/08/05 17:46:55 dlb]
45 *
46 * Revision 2.8 91/05/18 14:40:39 rpd
47 * Added kmem_alloc_aligned.
48 * [91/05/02 rpd]
49 *
50 * Revision 2.7 91/05/14 17:49:27 mrt
51 * Correcting copyright
52 *
53 * Revision 2.6 91/03/16 15:05:31 rpd
54 * Added kmem_realloc. Changed kmem_alloc and friends
55 * to return a kern_return_t.
56 * [91/03/03 rpd]
57 *
58 * Revision 2.5 91/02/05 17:58:31 mrt
59 * Changed to new Mach copyright
60 * [91/02/01 16:32:28 mrt]
61 *
62 * Revision 2.4 90/06/02 15:10:51 rpd
63 * Added ipc_kernel_map.
64 * [90/03/26 23:13:05 rpd]
65 *
66 * Revision 2.3 90/02/22 20:05:46 dbg
67 * Remove vm_move(), kmem_alloc_wait(), kmem_free_wakeup().
68 * [90/01/25 dbg]
69 *
70 * Revision 2.2 90/01/11 11:47:53 dbg
71 * Remove kmem_mb_alloc, mb_map. Add io_wire and io_unwire.
72 * [89/12/11 dbg]
73 *
74 * Changes for MACH_KERNEL:
75 * . Added kmem_alloc_wired.
76 * . Removed non-MACH header files, user_pt_map, vm_kern_zero_page.
77 * [89/04/28 dbg]
78 *
79 * Revision 2.1 89/08/03 16:45:13 rwd
80 * Created.
81 *
82 * Revision 2.8 89/04/18 21:25:51 mwyoung
83 * No relevant history.
84 * [89/04/18 mwyoung]
85 *
86 */
87 /*
88 * File: vm/vm_kern.h
89 * Author: Avadis Tevanian, Jr., Michael Wayne Young
90 * Date: 1985
91 *
92 * Kernel memory management definitions.
93 */
94
95 #ifndef _VM_VM_KERN_H_
96 #define _VM_VM_KERN_H_
97
98 #include <net_atm.h>
99
100 #include <mach/kern_return.h>
101 #include <vm/vm_map.h>
102
103 #if NET_ATM
104 extern kern_return_t projected_buffer_allocate(
105 vm_map_t map,
106 vm_size_t size,
107 int persistence,
108 vm_offset_t *kernel_p,
109 vm_offset_t *user_p,
110 vm_prot_t protection,
111 vm_inherit_t inheritance); /*Currently only VM_INHERIT_NONE supported*/
112 extern kern_return_t projected_buffer_deallocate(
113 vm_map_t map,
114 vm_offset_t start,
115 vm_offset_t end);
116 extern kern_return_t projected_buffer_map(
117 vm_map_t map,
118 vm_offset_t kernel_addr,
119 vm_size_t size,
120 vm_offset_t *user_p,
121 vm_prot_t protection,
122 vm_inherit_t inheritance); /*Currently only VM_INHERIT_NONE supported*/
123 extern kern_return_t projected_buffer_collect(
124 vm_map_t map);
125 #endif /* NET_ATM */
126
127 extern void kmem_init(
128 vm_offset_t start,
129 vm_offset_t end);
130
131 extern kern_return_t kmem_alloc(
132 vm_map_t map,
133 vm_offset_t *addrp,
134 vm_size_t size);
135 extern kern_return_t kmem_alloc_pageable(
136 vm_map_t map,
137 vm_offset_t *addrp,
138 vm_size_t size);
139 extern kern_return_t kmem_alloc_wired(
140 vm_map_t map,
141 vm_offset_t *addrp,
142 vm_size_t size);
143 extern kern_return_t kmem_alloc_aligned(
144 vm_map_t map,
145 vm_offset_t *addrp,
146 vm_size_t size);
147 extern kern_return_t kmem_realloc(
148 vm_map_t map,
149 vm_offset_t oldaddr,
150 vm_size_t oldsize,
151 vm_offset_t *newaddrp,
152 vm_size_t newsize);
153 extern void kmem_free(
154 vm_map_t map,
155 vm_offset_t addr,
156 vm_size_t size);
157
158 extern vm_map_t kmem_suballoc(
159 vm_map_t parent,
160 vm_offset_t *min,
161 vm_offset_t *max,
162 vm_size_t size,
163 boolean_t pageable);
164
165 extern kern_return_t kmem_io_map_copyout(
166 vm_map_t map,
167 vm_offset_t *addr,
168 vm_offset_t *alloc_addr,
169 vm_size_t *alloc_size,
170 vm_map_copy_t copy,
171 vm_size_t min_size);
172
173 extern void kmem_io_map_deallocate(
174 vm_map_t map,
175 vm_offset_t addr,
176 vm_size_t size);
177
178 extern vm_map_t kernel_map;
179 extern vm_map_t kernel_pageable_map;
180 extern vm_map_t ipc_kernel_map;
181
182 #endif /* _VM_VM_KERN_H_ */
Cache object: e105fe5db27da6de3ed47c929059156b
|