]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/vm/vm_user.c
xnu-792.24.17.tar.gz
[apple/xnu.git] / osfmk / vm / vm_user.c
index 24c1aa3c9ff018a535011645f8b3d518a2420b7a..95cd96294759775a556fb719fca3a2f4b16b65de 100644 (file)
@@ -1,29 +1,23 @@
 /*
  * Copyright (c) 2000-2004 Apple Computer, Inc. All rights reserved.
  *
- * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ * @APPLE_LICENSE_HEADER_START@
  * 
- * This file contains Original Code and/or Modifications of Original Code
- * as defined in and that are subject to the Apple Public Source License
- * Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. The rights granted to you under the License
- * may not be used to create, or enable the creation or redistribution of,
- * unlawful or unlicensed copies of an Apple operating system, or to
- * circumvent, violate, or enable the circumvention or violation of, any
- * terms of an Apple operating system software license agreement.
+ * The contents of this file constitute Original Code as defined in and
+ * are subject to the Apple Public Source License Version 1.1 (the
+ * "License").  You may not use this file except in compliance with the
+ * License.  Please obtain a copy of the License at
+ * http://www.apple.com/publicsource and read it before using this file.
  * 
- * Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this file.
- * 
- * The Original Code and all software distributed under the License are
- * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * This Original Code and all software distributed under the License are
+ * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
- * Please see the License for the specific language governing rights and
- * limitations under the License.
+ * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
+ * License for the specific language governing rights and limitations
+ * under the License.
  * 
- * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ * @APPLE_LICENSE_HEADER_END@
  */
 /*
  * @OSF_COPYRIGHT@
@@ -2350,11 +2344,6 @@ redo_lookup:
                                shadow_object = map_entry->object.vm_object;
                                vm_object_unlock(object);
 
-                               prot = map_entry->protection & ~VM_PROT_WRITE;
-#ifdef STACK_ONLY_NX
-                               if (map_entry->alias != VM_MEMORY_STACK && prot)
-                                       prot |= VM_PROT_EXECUTE;
-#endif
                                vm_object_pmap_protect(
                                        object, map_entry->offset,
                                        total_size,
@@ -2363,7 +2352,7 @@ redo_lookup:
                                                        ? PMAP_NULL :
                                                        target_map->pmap),
                                        map_entry->vme_start,
-                                       prot);
+                                       map_entry->protection & ~VM_PROT_WRITE);
                                total_size -= (map_entry->vme_end 
                                                - map_entry->vme_start);
                                next_entry = map_entry->vme_next;
@@ -2880,106 +2869,6 @@ mach_destroy_memory_entry(
                mutex_unlock(&(named_entry)->Lock);
 }
 
-/* Allow manipulation of individual page state.  This is actually part of */
-/* the UPL regimen but takes place on the memory entry rather than on a UPL */
-
-kern_return_t
-mach_memory_entry_page_op(
-       ipc_port_t              entry_port,
-       vm_object_offset_t      offset,
-       int                     ops,
-       ppnum_t                 *phys_entry,
-       int                     *flags)
-{
-       vm_named_entry_t        mem_entry;
-       vm_object_t             object;
-       kern_return_t           kr;
-
-       if (entry_port == IP_NULL ||
-           ip_kotype(entry_port) != IKOT_NAMED_ENTRY) {
-               return KERN_INVALID_ARGUMENT;
-       }
-
-       mem_entry = (vm_named_entry_t) entry_port->ip_kobject;
-
-       named_entry_lock(mem_entry);
-
-       if (mem_entry->is_sub_map || mem_entry->is_pager) {
-               named_entry_unlock(mem_entry);
-               return KERN_INVALID_ARGUMENT;
-       }
-
-       object = mem_entry->backing.object;
-       if (object == VM_OBJECT_NULL) {
-               named_entry_unlock(mem_entry);
-               return KERN_INVALID_ARGUMENT;
-       }
-
-       vm_object_reference(object);
-       named_entry_unlock(mem_entry);
-
-       kr = vm_object_page_op(object, offset, ops, phys_entry, flags);
-
-       vm_object_deallocate(object);   
-
-       return kr;
-}
-
-/*
- * mach_memory_entry_range_op offers performance enhancement over 
- * mach_memory_entry_page_op for page_op functions which do not require page 
- * level state to be returned from the call.  Page_op was created to provide 
- * a low-cost alternative to page manipulation via UPLs when only a single 
- * page was involved.  The range_op call establishes the ability in the _op 
- * family of functions to work on multiple pages where the lack of page level
- * state handling allows the caller to avoid the overhead of the upl structures.
- */
-
-kern_return_t
-mach_memory_entry_range_op(
-       ipc_port_t              entry_port,
-       vm_object_offset_t      offset_beg,
-       vm_object_offset_t      offset_end,
-       int                     ops,
-       int                     *range)
-{
-       vm_named_entry_t        mem_entry;
-       vm_object_t             object;
-       kern_return_t           kr;
-
-       if (entry_port == IP_NULL ||
-           ip_kotype(entry_port) != IKOT_NAMED_ENTRY) {
-               return KERN_INVALID_ARGUMENT;
-       }
-
-       mem_entry = (vm_named_entry_t) entry_port->ip_kobject;
-
-       named_entry_lock(mem_entry);
-
-       if (mem_entry->is_sub_map || mem_entry->is_pager) {
-               named_entry_unlock(mem_entry);
-               return KERN_INVALID_ARGUMENT;
-       }
-
-       object = mem_entry->backing.object;
-       if (object == VM_OBJECT_NULL) {
-               named_entry_unlock(mem_entry);
-               return KERN_INVALID_ARGUMENT;
-       }
-
-       vm_object_reference(object);
-       named_entry_unlock(mem_entry);
-
-       kr = vm_object_range_op(object,
-                               offset_beg,
-                               offset_end,
-                               ops,
-                               range);
-
-       vm_object_deallocate(object);
-
-       return kr;
-}
 
 
 kern_return_t