X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/1c79356b52d46aa6b508fb032f5ae709b1f2897b..91447636331957f3d9b5ca5b508f07c526b0074d:/osfmk/mach/memory_object.defs diff --git a/osfmk/mach/memory_object.defs b/osfmk/mach/memory_object.defs index 2e8ffe8f4..920397d64 100644 --- a/osfmk/mach/memory_object.defs +++ b/osfmk/mach/memory_object.defs @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000 Apple Computer, Inc. All rights reserved. + * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved. * * @APPLE_LICENSE_HEADER_START@ * @@ -59,10 +59,10 @@ subsystem #if KERNEL_USER KernelUser -#endif KERNEL_USER +#endif /* KERNEL_USER */ #if KERNEL_SERVER KernelServer -#endif KERNEL_SERVER +#endif /* KERNEL_SERVER */ memory_object 2200; #ifdef MACH_KERNEL @@ -74,168 +74,123 @@ subsystem #if KERNEL_SERVER serverprefix dp_; -#else -#if SEQNOS -serverprefix seqnos_; -serverdemux seqnos_memory_object_server; -#endif SEQNOS #endif /* * Initialize the specified memory object, providing - * a reqeust port on which control calls can be made. + * a memory object control reference on which to make + * cache control calls. * [To allow the mapping of this object to be used, the * memory manager must call memory_object_set_attributes, * specifying the "ready" parameter as TRUE. To reject * all mappings of this object, the memory manager may * use memory_object_destroy.] */ -simpleroutine memory_object_init( +routine memory_object_init( memory_object : memory_object_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; - memory_object_page_size : vm_size_t); + memory_control : memory_object_control_t; + memory_object_page_size : memory_object_cluster_size_t); /* * Indicates that the specified memory object is no longer * mapped (or cached -- see memory_object_set_attributes), * and that further mappings will cause another memory_object_init - * call to be made. No further calls will be made on - * the memory object by this kernel. + * call to be made. * - * [All rights to the control and name ports are included - * in this call. The memory manager should use port_deallocate - * to release them once they are no longer needed.] + * [The kernel will release its reference on the memory object + * after this call returns. The memory object control associated + * with the memory object is no longer usable - the pager should + * drop the control reference granted to it by memory_object_init.] */ -simpleroutine memory_object_terminate( - memory_object : memory_object_t = - MACH_MSG_TYPE_MOVE_SEND - ctype: mach_port_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MOVE_RECEIVE - ctype: mach_port_t); +routine memory_object_terminate( + memory_object : memory_object_t); /* * Request data from this memory object. At least * the specified data should be returned with at * least the specified access permitted. * - * [Reply should be memory_object_data_provided.] + * [Response should be upl commit over the specified range.] */ -simpleroutine memory_object_data_request( +routine memory_object_data_request( memory_object : memory_object_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; offset : memory_object_offset_t; - length : vm_size_t; + length : memory_object_cluster_size_t; desired_access : vm_prot_t); /* - * Request that the specified portion of this - * memory object be unlocked to allow the specified - * forms of access; the kernel already has the data. + * Return data to manager. This call is used in place of data_write + * for objects initialized by object_ready instead of set_attributes. + * This call indicates whether the returned data is dirty and whether + * the kernel kept a copy. Precious data remains precious if the + * kernel keeps a copy. The indication that the kernel kept a copy + * is only a hint if the data is not precious; the cleaned copy may + * be discarded without further notifying the manager. * - * [Reply should be memory_object_lock_request.] + * [response should be a upl_commit over the range specified] */ -simpleroutine memory_object_data_unlock( +routine memory_object_data_return( memory_object : memory_object_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; - offset : memory_object_offset_t; - length : vm_size_t; - desired_access : vm_prot_t); + offset : memory_object_offset_t; + size : memory_object_cluster_size_t; + out resid_offset : memory_object_offset_t; + out io_error : int; + dirty : boolean_t; + kernel_copy : boolean_t; + upl_flags : int); /* - * Indicate that a previous memory_object_lock_reqeust has been - * completed. Note that this call is made on whatever - * port is specified in the memory_object_lock_request; that port - * need not be the memory object port itself. + * Provide initial data contents for this region of + * the memory object. If data has already been written + * to the object, this value must be discarded; otherwise, + * this call acts identically to memory_object_data_return. * - * [No reply expected.] + * [response should be UPL commit over the specified range.] */ -simpleroutine memory_object_lock_completed( - memory_object : memory_object_t = - polymorphic|MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; +routine memory_object_data_initialize( + memory_object : memory_object_t; offset : memory_object_offset_t; - length : vm_size_t); - - skip; + size : memory_object_cluster_size_t); /* - * Return data to manager. This call is used in place of data_write - * for objects initialized by object_ready instead of set_attributes. - * This call indicates whether the returned data is dirty and whether - * the kernel kept a copy. Precious data remains precious if the - * kernel keeps a copy. The indication that the kernel kept a copy - * is only a hint if the data is not precious; the cleaned copy may - * be discarded without further notifying the manager. + * Request that the specified portion of this + * memory object be unlocked to allow the specified + * forms of access; the kernel already has the data. * - * [Reply should be vm_deallocate to release the data.] + * [Response should be memory_object_lock_request when + * the operation is fully complete.] */ -simpleroutine memory_object_data_return( +routine memory_object_data_unlock( memory_object : memory_object_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; - offset : memory_object_offset_t; - data : pointer_t; - dirty : boolean_t; - kernel_copy : boolean_t); + offset : memory_object_offset_t; + size : memory_object_cluster_size_t; + desired_access : vm_prot_t); -simpleroutine memory_object_synchronize( +/* + * Request that the specified portion of this + * memory object be synchronized with its backing + * store according to the supplied flags. + * + * [Response should be memory_object_synchronize_completed when + * the operation is fully complete.] + */ +routine memory_object_synchronize( memory_object : memory_object_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; - offset : memory_object_offset_t; - length : vm_offset_t; - sync_flags : vm_sync_t ); - + offset : memory_object_offset_t; + size : memory_object_cluster_size_t; + sync_flags : vm_sync_t ); /* - * Confirm a successful memory_object_change attributes message. + * Notify the pager that the specified memory object + * has no other (mapped) references besides the named + * reference held by the pager itself. + * + * [Response should be a release of the named reference when + * the pager deems that appropriate.] */ -simpleroutine memory_object_change_completed( - memory_object : memory_object_t = - polymorphic|MACH_MSG_TYPE_PORT_SEND_ONCE - ctype: mach_port_t; -#if SEQNOS - msgseqno seqno : mach_port_seqno_t; -#endif SEQNOS - memory_control : memory_object_control_t = - MACH_MSG_TYPE_MAKE_SEND - ctype: mach_port_t; - flavor : memory_object_flavor_t); - - - skip; +routine memory_object_unmap( + memory_object : memory_object_t); + +