Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys Add an optional pglist argument to uvm_obj_wirepages, to be
details: https://anonhg.NetBSD.org/src/rev/936bfda3814a
branches: trunk
changeset: 768768:936bfda3814a
user: christos <christos%NetBSD.org@localhost>
date: Sat Aug 27 09:11:52 2011 +0000
description:
Add an optional pglist argument to uvm_obj_wirepages, to be
filled with the list of pages that were wired.
diffstat:
sys/kern/sysv_shm.c | 8 ++++----
sys/uvm/uvm_extern.h | 5 +++--
sys/uvm/uvm_object.c | 9 ++++++---
3 files changed, 13 insertions(+), 9 deletions(-)
diffs (92 lines):
diff -r e13816923615 -r 936bfda3814a sys/kern/sysv_shm.c
--- a/sys/kern/sysv_shm.c Sat Aug 27 09:06:58 2011 +0000
+++ b/sys/kern/sysv_shm.c Sat Aug 27 09:11:52 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: sysv_shm.c,v 1.121 2011/07/30 06:19:02 uebayasi Exp $ */
+/* $NetBSD: sysv_shm.c,v 1.122 2011/08/27 09:11:52 christos Exp $ */
/*-
* Copyright (c) 1999, 2007 The NetBSD Foundation, Inc.
@@ -61,7 +61,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: sysv_shm.c,v 1.121 2011/07/30 06:19:02 uebayasi Exp $");
+__KERNEL_RCSID(0, "$NetBSD: sysv_shm.c,v 1.122 2011/08/27 09:11:52 christos Exp $");
#define SYSVSHM
@@ -268,7 +268,7 @@
(shmseg->shm_perm.mode & SHMSEG_WIRED) == 0) {
/* Wire the object and map, then tag it */
error = uvm_obj_wirepages(shmseg->_shm_internal,
- 0, size);
+ 0, size, NULL);
if (error)
return EIO;
error = uvm_map_pageable(&p->p_vmspace->vm_map,
@@ -734,7 +734,7 @@
shmseg->_shm_internal = uao_create(size, 0);
if (lockmem) {
/* Wire the pages and tag it */
- error = uvm_obj_wirepages(shmseg->_shm_internal, 0, size);
+ error = uvm_obj_wirepages(shmseg->_shm_internal, 0, size, NULL);
if (error) {
uao_detach(shmseg->_shm_internal);
mutex_enter(&shm_lock);
diff -r e13816923615 -r 936bfda3814a sys/uvm/uvm_extern.h
--- a/sys/uvm/uvm_extern.h Sat Aug 27 09:06:58 2011 +0000
+++ b/sys/uvm/uvm_extern.h Sat Aug 27 09:11:52 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_extern.h,v 1.174 2011/06/16 09:21:03 hannken Exp $ */
+/* $NetBSD: uvm_extern.h,v 1.175 2011/08/27 09:11:53 christos Exp $ */
/*
* Copyright (c) 1997 Charles D. Cranor and Washington University.
@@ -706,7 +706,8 @@
const struct uvm_pagerops *, bool, u_int);
void uvm_obj_setlock(struct uvm_object *, kmutex_t *);
void uvm_obj_destroy(struct uvm_object *, bool);
-int uvm_obj_wirepages(struct uvm_object *, off_t, off_t);
+int uvm_obj_wirepages(struct uvm_object *, off_t, off_t,
+ struct pglist *);
void uvm_obj_unwirepages(struct uvm_object *, off_t, off_t);
/* uvm_page.c */
diff -r e13816923615 -r 936bfda3814a sys/uvm/uvm_object.c
--- a/sys/uvm/uvm_object.c Sat Aug 27 09:06:58 2011 +0000
+++ b/sys/uvm/uvm_object.c Sat Aug 27 09:11:52 2011 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: uvm_object.c,v 1.10 2011/06/18 21:14:43 rmind Exp $ */
+/* $NetBSD: uvm_object.c,v 1.11 2011/08/27 09:11:53 christos Exp $ */
/*
* Copyright (c) 2006, 2010 The NetBSD Foundation, Inc.
@@ -37,7 +37,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: uvm_object.c,v 1.10 2011/06/18 21:14:43 rmind Exp $");
+__KERNEL_RCSID(0, "$NetBSD: uvm_object.c,v 1.11 2011/08/27 09:11:53 christos Exp $");
#include "opt_ddb.h"
@@ -123,7 +123,8 @@
* => caller must pass page-aligned start and end values
*/
int
-uvm_obj_wirepages(struct uvm_object *uobj, off_t start, off_t end)
+uvm_obj_wirepages(struct uvm_object *uobj, off_t start, off_t end,
+ struct pglist *list)
{
int i, npages, error;
struct vm_page *pgs[FETCH_PAGECOUNT], *pg = NULL;
@@ -177,6 +178,8 @@
mutex_enter(&uvm_pageqlock);
for (i = 0; i < npages; i++) {
uvm_pagewire(pgs[i]);
+ if (list != NULL)
+ TAILQ_INSERT_TAIL(list, pgs[i], pageq.queue);
}
mutex_exit(&uvm_pageqlock);
Home |
Main Index |
Thread Index |
Old Index