1 .\"
2 .\" Mach Operating System
3 .\" Copyright (c) 1991,1990 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: memory_object_copy.man,v $
29 .\" Revision 2.5 93/05/10 19:33:22 rvb
30 .\" updated
31 .\" [93/04/21 16:08:05 lli]
32 .\"
33 .\" Revision 2.4 91/05/14 17:08:31 mrt
34 .\" Correcting copyright
35 .\"
36 .\" Revision 2.3 91/02/14 14:12:28 mrt
37 .\" Changed to new Mach copyright
38 .\" [91/02/12 18:12:50 mrt]
39 .\"
40 .\" Revision 2.2 90/08/07 18:39:19 rpd
41 .\" Created.
42 .\"
43 .TH memory_object_copy 2 12/19/89
44 .CM 4
45 .SH NAME
46 .nf
47 memory_object_copy \- part of page object has been copied
48 .SH SYNOPSIS
49 .nf
50 .ft B
51 #include <mach.h>
52
53 .nf
54 .ft B
55 kern_return_t memory_object_copy(old_memory_object, old_memory_control,
56 offset, length, new_memory_object)
57 mach_port_t old_memory_object;
58 memory_object_control_t old_memory_control;
59 vm_offset_t offset;
60 vm_size_t length;
61 mach_port_t new_memory_object;
62
63
64
65 .fi
66 .ft P
67 .SH DESCRIPTION
68 .B memory_object_copy
69 indicates that a copy has been made of the specified
70 range of the given original memory object.
71 This call includes only the new memory object itself; a
72 .B memory_object_init
73 call will be made on the new memory object after the currently cached pages
74 of the original object are prepared. After the memory manager receives the
75 init call, it should reply with the
76 .B memory_object_set_attributes
77 call to
78 assert the "ready" attribute. The kernel will use the new memory
79 object, contol and name ports to refer to the new copy.
80
81 This call is made when the original memory object had the caching
82 parameter set to
83 .B MEMORY_OBJECT_COPY_CALL
84 and a user of the object
85 has asked the kernel to copy it.
86
87 Cached pages from the original memory object at the time of the copy operation
88 are handled as follows: Readable pages may be silently copied to the new
89 memory object (with all access permissions). Pages not copied are locked
90 to prevent write access.
91
92 The new memory object is
93 .I temporary
94 , meaning that the memory manager should
95 not change its contents or allow the memory object to be mapped in another
96 client. The memory manager may use the
97 .B memory_object_data_unavailable
98 call to indicate that the appropriate pages of the original memory
99 object may be used to fulfill the data request.
100
101 .SH ARGUMENTS
102 .TP 15
103 .B
104 .B old_memory_object
105 The port that represents the old memory object date.
106 .TP 15
107 .B
108 .B old_memory_contol
109 The kernel control port for the old object.
110 .TP 15
111 .B
112 .B offset
113 The offset within a memory object to which this call refers.
114 This will be page aligned.
115 .TP 15
116 .B
117 .B length
118 The number of bytes of data, starting at
119 .B offset
120 , to which this
121 call refers. This will be an integral number of memory object pages.
122 .TP 15
123 .B
124 .B new_memory_object
125 A new memory object created by the kernel; see
126 synopsis for further description. Note that all port rights (including
127 receive rights) are included for the new memory object.
128
129 .SH DIAGNOSTICS
130 .TP 25
131 .B KERN_SUCCESS
132 Since this routine is called by the kernel, which does not
133 wait for a reply message, this value is ignored.
134
135 .SH SEE ALSO
136 .B memory_object_init, memory_object_set_attributes,
137
138 .B memory_object_data_unavailable
139
Cache object: 5aad1b4414ab815c8f54eb02c6f90e33
|