]> git.saurik.com Git - apple/xnu.git/blob - osfmk/man/MO_lock_completed.html
ff1e19a0cac7bc8ed150aa56d1c9a81706abc44c
[apple/xnu.git] / osfmk / man / MO_lock_completed.html
1 <h2>memory_object_lock_completed</h2>
2 <hr>
3 <p>
4 <strong>Server Interface</strong> - Report to memory manager that a previous consistency control request has been handled.
5 <h3>SYNOPSIS</h3>
6 <pre>
7 <strong>kern_return_t memory_object_lock_completed</strong>
8 <strong>(memory_object_t</strong> <var>reply_port</var>,
9 <strong>memory_object_control_t</strong> <var>memory_control</var>,
10 <strong>vm_offset_t</strong> <var>offset</var>,
11 <strong>vm_size_t</strong> <var>length</var><strong>);</strong>
12
13
14 <strong>kern_return_t seqnos_memory_object_lock_completed</strong>
15 <strong>(memory_object_t</strong> <var>reply_port</var>,
16 <strong>mach_port_seqno_t</strong> <var>seqno</var>,
17 <strong>memory_object_control_t</strong> <var>memory_control</var>,
18 <strong>vm_offset_t</strong> <var>offset</var>,
19 <strong>vm_size_t</strong> <var>length</var><strong>);</strong>
20 </pre>
21 <h3>PARAMETERS</h3>
22 <dl>
23 <p>
24 <dt> <var>reply_port</var>
25 <dd>
26 [in reply (receive) right]
27 The port supplied in the corresponding
28 <strong>memory_object_lock_request</strong> call.
29 <p>
30 <dt> <var>seqno</var>
31 <dd>
32 [in scalar]
33 The sequence number of this message relative to the port
34 named in the <strong>memory_object_lock_completed</strong> message.
35 <p>
36 <dt> <var>memory_control</var>
37 <dd>
38 [in memory-cache-control send right]
39 The memory cache control port
40 to be used for a response by the memory manager. If the memory
41 object has been supplied to more than one kernel, this parameter
42 identifies the kernel that is making the call.
43 <p>
44 <dt> <var>offset</var>
45 <dd>
46 [in scalar]
47 The offset within the memory object.
48 <p>
49 <dt> <var>length</var>
50 <dd>
51 [in scalar]
52 The number of bytes to which the call refers, starting at
53 <var>offset</var>. The number converts to an integral number of memory object
54 pages.
55 </dl>
56 <h3>DESCRIPTION</h3>
57 <p>
58 A <strong>memory_object_lock_completed</strong> function is called as
59 the result of a kernel
60 message confirming the kernel's action in response to a
61 <strong>memory_object_lock_request</strong> call from the memory manager.
62 The memory manager can use the <strong>memory_object_lock_request</strong> call to:
63 <ul>
64 <li>
65 Alter access restrictions specified in the <strong>memory_object_data_supply</strong>
66 call or a previous <strong>memory_object_lock_request</strong> call.
67 <p>
68 <li>
69 Write back modifications made in memory.
70 <p>
71 <li>
72 Invalidate its cached data.
73 </ul>
74 <p>
75 When the kernel completes the requested actions, it calls
76 <strong>memory_object_lock_completed</strong> (asynchronously) using
77 the port explicitly provided in the
78 <strong>memory_object_lock_request</strong> call. Because the memory manager cannot
79 know which pages have been modified, or even which pages remain in the
80 cache, it cannot know how many pages will be written back in response to a
81 <strong>memory_object_lock_request</strong> call. Receiving the
82 <strong>memory_object_lock_completed</strong> call is the only sure
83 means of detecting completion. The completion call
84 includes the offset and length values from the consistency request
85 to distinguish
86 it from other consistency requests.
87 <h3>RETURN VALUES</h3>
88 <p>
89 Only generic errors apply.
90 <h3>RELATED INFORMATION</h3>
91 <p>
92 Functions:
93 <a href="memory_object_lock_request.html"><strong>memory_object_lock_request</strong></a>,
94 <a href="memory_object_server.html"><strong>memory_object_server</strong></a>,
95 <a href="SMO_server.html"><strong>seqnos_memory_object_server</strong></a>.