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