xref: /xnu-10063.121.3/osfmk/mach/memory_object_control.h (revision 2c2f96dc2b9a4408a43d3150ae9c105355ca3daa)
1 /*
2  * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3  *
4  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5  *
6  * This file contains Original Code and/or Modifications of Original Code
7  * as defined in and that are subject to the Apple Public Source License
8  * Version 2.0 (the 'License'). You may not use this file except in
9  * compliance with the License. The rights granted to you under the License
10  * may not be used to create, or enable the creation or redistribution of,
11  * unlawful or unlicensed copies of an Apple operating system, or to
12  * circumvent, violate, or enable the circumvention or violation of, any
13  * terms of an Apple operating system software license agreement.
14  *
15  * Please obtain a copy of the License at
16  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17  *
18  * The Original Code and all software distributed under the License are
19  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23  * Please see the License for the specific language governing rights and
24  * limitations under the License.
25  *
26  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27  */
28 /*
29  * @OSF_COPYRIGHT@
30  */
31 /*
32  * Mach Operating System
33  * Copyright (c) 1991,1990,1989,1988,1987 Carnegie Mellon University
34  * All Rights Reserved.
35  *
36  * Permission to use, copy, modify and distribute this software and its
37  * documentation is hereby granted, provided that both the copyright
38  * notice and this permission notice appear in all copies of the
39  * software, derivative works or modified versions, and any portions
40  * thereof, and that both notices appear in supporting documentation.
41  *
42  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
43  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
44  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
45  *
46  * Carnegie Mellon requests users of this software to return to
47  *
48  *  Software Distribution Coordinator  or  [email protected]
49  *  School of Computer Science
50  *  Carnegie Mellon University
51  *  Pittsburgh PA 15213-3890
52  *
53  * any improvements or extensions that they make and grant Carnegie Mellon
54  * the rights to redistribute these changes.
55  */
56 /*
57  */
58 /*
59  * File:	mach/memory_object_control.h
60  *
61  * Abstract:
62  *	Basic Mach external memory management interface declaration.
63  */
64 
65 
66 #ifndef _MACH_MEMORY_OBJECT_CONTROL_
67 #define _MACH_MEMORY_OBJECT_CONTROL_
68 
69 /* Module memory_object_control */
70 
71 #include <string.h>
72 #include <mach/ndr.h>
73 #include <mach/boolean.h>
74 #include <mach/kern_return.h>
75 #include <mach/notify.h>
76 #include <mach/mach_types.h>
77 #include <mach/message.h>
78 #include <mach/mig_errors.h>
79 #include <mach/port.h>
80 
81 #include <vm/vm_protos.h>
82 
83 __BEGIN_DECLS
84 #pragma GCC visibility push(hidden)
85 
86 extern kern_return_t memory_object_change_attributes(
87 	memory_object_control_t memory_control,
88 	memory_object_flavor_t flavor,
89 	memory_object_info_t attributes,
90 	mach_msg_type_number_t attributesCnt);
91 
92 extern kern_return_t memory_object_lock_request(
93 	memory_object_control_t memory_control,
94 	memory_object_offset_t offset,
95 	memory_object_size_t size,
96 	memory_object_offset_t *resid_offset,
97 	integer_t *io_errno,
98 	memory_object_return_t should_return,
99 	integer_t flags,
100 	vm_prot_t lock_value);
101 
102 extern kern_return_t memory_object_destroy(
103 	memory_object_control_t                         memory_control,
104 	vm_object_destroy_reason_t   reason);
105 
106 extern kern_return_t memory_object_upl_request(
107 	memory_object_control_t memory_control,
108 	memory_object_offset_t offset,
109 	upl_size_t size,
110 	upl_t *upl,
111 	upl_page_info_array_t page_list,
112 	mach_msg_type_number_t *page_listCnt,
113 	integer_t cntrl_flags,
114 	integer_t tag);
115 
116 extern kern_return_t memory_object_cluster_size(
117 	memory_object_control_t control,
118 	memory_object_offset_t *start,
119 	vm_size_t *length,
120 	uint32_t *io_streaming,
121 	memory_object_fault_info_t fault_info);
122 
123 __exported
124 extern kern_return_t memory_object_page_op(
125 	memory_object_control_t memory_control,
126 	memory_object_offset_t offset,
127 	integer_t ops,
128 	uint32_t *phys_entry,
129 	integer_t *flags);
130 
131 extern kern_return_t memory_object_range_op(
132 	memory_object_control_t memory_control,
133 	memory_object_offset_t offset_beg,
134 	memory_object_offset_t offset_end,
135 	integer_t ops,
136 	integer_t *range);
137 
138 #pragma GCC visibility pop
139 __END_DECLS
140 
141 #endif   /* _MACH_MEMORY_OBJECT_CONTROL_ */
142