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