xref: /xnu-8796.121.2/osfmk/man/memory_object_init.html (revision c54f35ca767986246321eb901baf8f5ff7923f6a)
1*c54f35caSApple OSS Distributions<h2>memory_object_init</h2>
2*c54f35caSApple OSS Distributions<hr>
3*c54f35caSApple OSS Distributions<p>
4*c54f35caSApple OSS Distributions<strong>Server Interface</strong> - Initializes a memory object.
5*c54f35caSApple OSS Distributions<h3>SYNOPSIS</h3>
6*c54f35caSApple OSS Distributions<pre>
7*c54f35caSApple OSS Distributions<strong>kern_return_t   memory_object_init</strong>
8*c54f35caSApple OSS Distributions		<strong>(memory_object_t</strong>                <var>memory_object</var>,
9*c54f35caSApple OSS Distributions		 <strong>memory_object_control_t       </strong><var>memory_control</var>,
10*c54f35caSApple OSS Distributions		 <strong>vm_size_t</strong>            <var>memory_object_page_size</var><strong>);</strong>
11*c54f35caSApple OSS Distributions
12*c54f35caSApple OSS Distributions
13*c54f35caSApple OSS Distributions<strong>kern_return_t   seqnos_memory_object_init</strong>
14*c54f35caSApple OSS Distributions		<strong>(memory_object_t</strong>                <var>memory_object</var>,
15*c54f35caSApple OSS Distributions		 <strong>mach_port_seqno_t</strong>                      <var>seqno</var>,
16*c54f35caSApple OSS Distributions		 <strong>memory_object_control_t</strong>       <var>memory_control</var>,
17*c54f35caSApple OSS Distributions		 <strong>vm_size_t</strong>            <var>memory_object_page_size</var><strong>);</strong>
18*c54f35caSApple OSS Distributions</pre>
19*c54f35caSApple OSS Distributions<h3>PARAMETERS</h3>
20*c54f35caSApple OSS Distributions<dl>
21*c54f35caSApple OSS Distributions<dt> <var>memory_object</var>
22*c54f35caSApple OSS Distributions<dd>
23*c54f35caSApple OSS Distributions[in abstract-memory-object port] The abstract memory object port that represents the memory object data, as supplied to the kernel in a vm_map call.
24*c54f35caSApple OSS Distributions<p>
25*c54f35caSApple OSS Distributions<dt> <var>seqno</var>
26*c54f35caSApple OSS Distributions<dd>
27*c54f35caSApple OSS Distributions[in scalar] The sequence number of this message relative to the abstract memory object port.
28*c54f35caSApple OSS Distributions<p>
29*c54f35caSApple OSS Distributions<dt> <var>memory_control</var>
30*c54f35caSApple OSS Distributions<dd>
31*c54f35caSApple OSS Distributions[in memory-cache-control port] The memory cache control port to be used by the memory manager. If the memory object has been supplied to more than one kernel, this parameter identifies the kernel that is making the call.
32*c54f35caSApple OSS Distributions<p>
33*c54f35caSApple OSS Distributions<dt> <var>memory_object_page_size</var>
34*c54f35caSApple OSS Distributions<dd>
35*c54f35caSApple OSS Distributions[in scalar] The page size used by the kernel. All calls involving this kernel must use data sizes that are integral multiples of this page size.
36*c54f35caSApple OSS Distributions</dl>
37*c54f35caSApple OSS Distributions<h3>DESCRIPTION</h3>
38*c54f35caSApple OSS Distributions<p>
39*c54f35caSApple OSS DistributionsA <strong>memory_object_init</strong> function is called as the result
40*c54f35caSApple OSS Distributionsof a kernel message notifying a memory manager that the kernel has
41*c54f35caSApple OSS Distributionsbeen asked to map the specified memory object into a task's virtual
42*c54f35caSApple OSS Distributionsaddress space.  When asked to map a memory object for the first time,
43*c54f35caSApple OSS Distributionsthe kernel responds by making a <strong>memory_object_init</strong>
44*c54f35caSApple OSS Distributionscall on the abstract memory object. This call is provided as a
45*c54f35caSApple OSS Distributionsconvenience to the memory manager, to allow it to initialize data
46*c54f35caSApple OSS Distributionsstructures and prepare to receive other requests.
47*c54f35caSApple OSS Distributions<p>
48*c54f35caSApple OSS DistributionsIn addition to the
49*c54f35caSApple OSS Distributionsabstract memory object port itself, the call provides
50*c54f35caSApple OSS Distributionsa memory cache control port that the memory manager can use to
51*c54f35caSApple OSS Distributionscontrol use of its data by the kernel. The memory manager gets send
52*c54f35caSApple OSS Distributionsrights for this port.
53*c54f35caSApple OSS Distributions<p>
54*c54f35caSApple OSS DistributionsThe kernel holds send rights for the abstract memory object port, and
55*c54f35caSApple OSS Distributionsboth send and receive rights for the memory cache control port.
56*c54f35caSApple OSS DistributionsThe call also supplies the virtual page size to be used for
57*c54f35caSApple OSS Distributionsthe memory mapping. The memory manager can use this size to detect
58*c54f35caSApple OSS Distributionsmappings that use different data structures at initialization time, or
59*c54f35caSApple OSS Distributionsto allocate buffers for use in reading data.
60*c54f35caSApple OSS Distributions<p>
61*c54f35caSApple OSS DistributionsIf a memory object is
62*c54f35caSApple OSS Distributionsmapped into the address space of more than one task on different hosts
63*c54f35caSApple OSS Distributions(with independent kernels), the memory manager will receive a
64*c54f35caSApple OSS Distributions<strong>memory_object_init</strong> call from each kernel, containing
65*c54f35caSApple OSS Distributionsa unique set of control and name ports. Note that each kernel may also
66*c54f35caSApple OSS Distributionsuse a different page size.
67*c54f35caSApple OSS Distributions<h3>RETURN VALUES</h3>
68*c54f35caSApple OSS Distributions<p>
69*c54f35caSApple OSS Distributions
70*c54f35caSApple OSS DistributionsAny return value other than <strong>KERN_SUCCESS</strong>
71*c54f35caSApple OSS Distributionsor <strong>MIG_NO_REPLY</strong>will cause
72*c54f35caSApple OSS Distributions<strong>mach_msg_server</strong> to remove the memory cache control reference.
73*c54f35caSApple OSS Distributions<h3>RELATED INFORMATION</h3>
74*c54f35caSApple OSS Distributions<p>
75*c54f35caSApple OSS DistributionsFunctions:
76*c54f35caSApple OSS Distributions<a href="memory_object_terminate.html"><strong>memory_object_terminate</strong></a>.
77