]> git.saurik.com Git - apple/xnu.git/blobdiff - osfmk/vm/vm_page.h
xnu-517.tar.gz
[apple/xnu.git] / osfmk / vm / vm_page.h
index 7ab8fe83eec4b930fa001c91633a4309ac64a3de..585c01355bf98afacd9219368e55c05010c8a6a7 100644 (file)
@@ -3,19 +3,22 @@
  *
  * @APPLE_LICENSE_HEADER_START@
  * 
- * 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.
+ * Copyright (c) 1999-2003 Apple Computer, Inc.  All Rights Reserved.
  * 
- * This Original Code and all software distributed under the License are
- * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
+ * 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. 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
  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.  Please see the
- * License for the specific language governing rights and limitations
- * under the License.
+ * 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.
  * 
  * @APPLE_LICENSE_HEADER_END@
  */
@@ -177,7 +180,7 @@ struct vm_page {
                                           /* a pageout candidate           */
         /* we've used up all 32 bits */
 
-       vm_offset_t     phys_addr;      /* Physical address of page, passed
+       vm_offset_t     phys_page;      /* Physical address of page, passed
                                         *  to pmap_enter (read-only) */
 };
 
@@ -249,6 +252,10 @@ extern
 int    vm_page_free_reserved;  /* How many pages reserved to do pageout */
 extern
 int    vm_page_laundry_count;  /* How many pages being laundered? */
+extern
+int    vm_page_burst_count;    /* How many pages being laundered to EMM? */
+extern
+int    vm_page_throttled_count;/* Count of zero-fill allocations throttled */
 
 decl_mutex_data(,vm_page_queue_lock)
                                /* lock on active and inactive page queues */
@@ -273,8 +280,8 @@ extern void         vm_page_bootstrap(
 extern void            vm_page_module_init(void);
 
 extern void            vm_page_create(
-                                       vm_offset_t     start,
-                                       vm_offset_t     end);
+                                       ppnum_t         start,
+                                       ppnum_t         end);
 
 extern vm_page_t       vm_page_lookup(
                                        vm_object_t             object,
@@ -313,7 +320,7 @@ extern vm_page_t    vm_page_alloc(
 
 extern void            vm_page_init(
                                        vm_page_t       page,
-                                       vm_offset_t     phys_addr);
+                                       ppnum_t         phys_page);
 
 extern void            vm_page_free(
                                        vm_page_t       page);
@@ -416,8 +423,9 @@ extern void         vm_page_gobble(
                MACRO_END
 
 #define VM_PAGE_THROTTLED()                                            \
-               (vm_page_free_count < (vm_page_free_target -            \
-                ((vm_page_free_target-vm_page_free_min)>>2)))
+               (vm_page_free_count < vm_page_free_min &&               \
+                !current_thread()->vm_privilege &&                     \
+                ++vm_page_throttled_count)
 
 #define        VM_PAGE_WAIT()          ((void)vm_page_wait(THREAD_UNINT))