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