kernel - Add VM_ALLOC_QUICK feature to vm_page_alloc()
authorMatthew Dillon <dillon@apollo.backplane.com>
Thu, 21 Jan 2010 19:40:29 +0000 (11:40 -0800)
committerMatthew Dillon <dillon@apollo.backplane.com>
Thu, 21 Jan 2010 19:40:29 +0000 (11:40 -0800)
* This feature allocates a page like VM_ALLOC_NORMAL, retaining the same
  free queue limits, but is not allowed to dig into the cache queue.

* Will be used by the new swap_pager_getpage() code.

sys/vm/vm_page.c
sys/vm/vm_page.h

index 1543c11..a5bebc6 100644 (file)
@@ -681,6 +681,7 @@ vm_page_select_free(vm_object_t object, vm_pindex_t pindex, boolean_t prefer_zer
  *     page_req classes:
  *
  *     VM_ALLOC_NORMAL         allow use of cache pages, nominal free drain
+ *     VM_ALLOC_QUICK          like normal but cannot use cache
  *     VM_ALLOC_SYSTEM         greater free drain
  *     VM_ALLOC_INTERRUPT      allow free list to be completely drained
  *     VM_ALLOC_ZERO           advisory request for pre-zero'd page
@@ -702,7 +703,8 @@ vm_page_alloc(vm_object_t object, vm_pindex_t pindex, int page_req)
        KASSERT(!vm_page_lookup(object, pindex),
                ("vm_page_alloc: page already allocated"));
        KKASSERT(page_req & 
-               (VM_ALLOC_NORMAL|VM_ALLOC_INTERRUPT|VM_ALLOC_SYSTEM));
+               (VM_ALLOC_NORMAL|VM_ALLOC_QUICK|
+                VM_ALLOC_INTERRUPT|VM_ALLOC_SYSTEM));
 
        /*
         * Certain system threads (pageout daemon, buf_daemon's) are
index 658c9bf..04fe284 100644 (file)
@@ -475,6 +475,7 @@ vm_page_io_finish(vm_page_t m)
 #define VM_ALLOC_SYSTEM                0x02    /* ok to exhaust most of free list */
 #define VM_ALLOC_INTERRUPT     0x04    /* ok to exhaust entire free list */
 #define        VM_ALLOC_ZERO           0x08    /* req pre-zero'd memory if avail */
+#define        VM_ALLOC_QUICK          0x10    /* like NORMAL but do not use cache */
 #define        VM_ALLOC_RETRY          0x80    /* indefinite block (vm_page_grab()) */
 
 void vm_page_unhold(vm_page_t mem);