Deleted Added
full compact
vm_reserv.c (238510) vm_reserv.c (248084)
1/*-
2 * Copyright (c) 2002-2006 Rice University
3 * Copyright (c) 2007-2008 Alan L. Cox <alc@cs.rice.edu>
4 * All rights reserved.
5 *
6 * This software was developed for the FreeBSD Project by Alan L. Cox,
7 * Olivier Crameri, Peter Druschel, Sitaram Iyer, and Juan Navarro.
8 *

--- 23 unchanged lines hidden (view full) ---

32/*
33 * Superpage reservation management module
34 *
35 * Any external functions defined by this module are only to be used by the
36 * virtual memory system.
37 */
38
39#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 2002-2006 Rice University
3 * Copyright (c) 2007-2008 Alan L. Cox <alc@cs.rice.edu>
4 * All rights reserved.
5 *
6 * This software was developed for the FreeBSD Project by Alan L. Cox,
7 * Olivier Crameri, Peter Druschel, Sitaram Iyer, and Juan Navarro.
8 *

--- 23 unchanged lines hidden (view full) ---

32/*
33 * Superpage reservation management module
34 *
35 * Any external functions defined by this module are only to be used by the
36 * virtual memory system.
37 */
38
39#include <sys/cdefs.h>
40__FBSDID("$FreeBSD: head/sys/vm/vm_reserv.c 238510 2012-07-15 21:46:19Z alc $");
40__FBSDID("$FreeBSD: head/sys/vm/vm_reserv.c 248084 2013-03-09 02:32:23Z attilio $");
41
42#include "opt_vm.h"
43
44#include <sys/param.h>
45#include <sys/kernel.h>
46#include <sys/lock.h>
47#include <sys/malloc.h>
48#include <sys/mutex.h>
49#include <sys/queue.h>
41
42#include "opt_vm.h"
43
44#include <sys/param.h>
45#include <sys/kernel.h>
46#include <sys/lock.h>
47#include <sys/malloc.h>
48#include <sys/mutex.h>
49#include <sys/queue.h>
50#include <sys/rwlock.h>
50#include <sys/sbuf.h>
51#include <sys/sysctl.h>
52#include <sys/systm.h>
53
54#include <vm/vm.h>
55#include <vm/vm_param.h>
56#include <vm/vm_object.h>
57#include <vm/vm_page.h>

--- 248 unchanged lines hidden (view full) ---

306 vm_paddr_t pa, size;
307 vm_page_t m, m_ret, mpred, msucc;
308 vm_pindex_t first, leftcap, rightcap;
309 vm_reserv_t rv;
310 u_long allocpages, maxpages, minpages;
311 int i, index, n;
312
313 mtx_assert(&vm_page_queue_free_mtx, MA_OWNED);
51#include <sys/sbuf.h>
52#include <sys/sysctl.h>
53#include <sys/systm.h>
54
55#include <vm/vm.h>
56#include <vm/vm_param.h>
57#include <vm/vm_object.h>
58#include <vm/vm_page.h>

--- 248 unchanged lines hidden (view full) ---

307 vm_paddr_t pa, size;
308 vm_page_t m, m_ret, mpred, msucc;
309 vm_pindex_t first, leftcap, rightcap;
310 vm_reserv_t rv;
311 u_long allocpages, maxpages, minpages;
312 int i, index, n;
313
314 mtx_assert(&vm_page_queue_free_mtx, MA_OWNED);
314 VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
315 VM_OBJECT_ASSERT_WLOCKED(object);
315 KASSERT(npages != 0, ("vm_reserv_alloc_contig: npages is 0"));
316
317 /*
318 * Is a reservation fundamentally impossible?
319 */
320 if (pindex < VM_RESERV_INDEX(object, pindex) ||
321 pindex + npages > object->size)
322 return (NULL);

--- 167 unchanged lines hidden (view full) ---

490vm_page_t
491vm_reserv_alloc_page(vm_object_t object, vm_pindex_t pindex)
492{
493 vm_page_t m, mpred, msucc;
494 vm_pindex_t first, leftcap, rightcap;
495 vm_reserv_t rv;
496
497 mtx_assert(&vm_page_queue_free_mtx, MA_OWNED);
316 KASSERT(npages != 0, ("vm_reserv_alloc_contig: npages is 0"));
317
318 /*
319 * Is a reservation fundamentally impossible?
320 */
321 if (pindex < VM_RESERV_INDEX(object, pindex) ||
322 pindex + npages > object->size)
323 return (NULL);

--- 167 unchanged lines hidden (view full) ---

491vm_page_t
492vm_reserv_alloc_page(vm_object_t object, vm_pindex_t pindex)
493{
494 vm_page_t m, mpred, msucc;
495 vm_pindex_t first, leftcap, rightcap;
496 vm_reserv_t rv;
497
498 mtx_assert(&vm_page_queue_free_mtx, MA_OWNED);
498 VM_OBJECT_LOCK_ASSERT(object, MA_OWNED);
499 VM_OBJECT_ASSERT_WLOCKED(object);
499
500 /*
501 * Is a reservation fundamentally impossible?
502 */
503 if (pindex < VM_RESERV_INDEX(object, pindex) ||
504 pindex >= object->size)
505 return (NULL);
506

--- 358 unchanged lines hidden (view full) ---

865 * The object must be locked.
866 */
867void
868vm_reserv_rename(vm_page_t m, vm_object_t new_object, vm_object_t old_object,
869 vm_pindex_t old_object_offset)
870{
871 vm_reserv_t rv;
872
500
501 /*
502 * Is a reservation fundamentally impossible?
503 */
504 if (pindex < VM_RESERV_INDEX(object, pindex) ||
505 pindex >= object->size)
506 return (NULL);
507

--- 358 unchanged lines hidden (view full) ---

866 * The object must be locked.
867 */
868void
869vm_reserv_rename(vm_page_t m, vm_object_t new_object, vm_object_t old_object,
870 vm_pindex_t old_object_offset)
871{
872 vm_reserv_t rv;
873
873 VM_OBJECT_LOCK_ASSERT(new_object, MA_OWNED);
874 VM_OBJECT_ASSERT_WLOCKED(new_object);
874 rv = vm_reserv_from_page(m);
875 if (rv->object == old_object) {
876 mtx_lock(&vm_page_queue_free_mtx);
877 if (rv->object == old_object) {
878 LIST_REMOVE(rv, objq);
879 LIST_INSERT_HEAD(&new_object->rvq, rv, objq);
880 rv->object = new_object;
881 rv->pindex -= old_object_offset;

--- 40 unchanged lines hidden ---
875 rv = vm_reserv_from_page(m);
876 if (rv->object == old_object) {
877 mtx_lock(&vm_page_queue_free_mtx);
878 if (rv->object == old_object) {
879 LIST_REMOVE(rv, objq);
880 LIST_INSERT_HEAD(&new_object->rvq, rv, objq);
881 rv->object = new_object;
882 rv->pindex -= old_object_offset;

--- 40 unchanged lines hidden ---