summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralc <alc@FreeBSD.org>2002-03-04 18:55:26 +0000
committeralc <alc@FreeBSD.org>2002-03-04 18:55:26 +0000
commit42c47fb8912e145b57c9c68cb6898e7519a956bd (patch)
treeada7f2371d00f6870621225abb1f45da1fa6d6ff
parent3f245d8dd193f05b337f1358ec6b33ed212f9cc1 (diff)
downloadFreeBSD-src-42c47fb8912e145b57c9c68cb6898e7519a956bd.zip
FreeBSD-src-42c47fb8912e145b57c9c68cb6898e7519a956bd.tar.gz
o Create vm_pageq_enqueue() to encapsulate code that is duplicated time
and again in vm_page.c and vm_pageq.c. o Delete unusused prototypes. (Mainly a result of the earlier renaming of various functions from vm_page_*() to vm_pageq_*().)
-rw-r--r--sys/vm/vm_page.c24
-rw-r--r--sys/vm/vm_page.h9
-rw-r--r--sys/vm/vm_pageq.c21
3 files changed, 24 insertions, 30 deletions
diff --git a/sys/vm/vm_page.c b/sys/vm/vm_page.c
index 5141708..c7466ed 100644
--- a/sys/vm/vm_page.c
+++ b/sys/vm/vm_page.c
@@ -1041,12 +1041,9 @@ vm_page_activate(vm_page_t m)
vm_pageq_remove(m);
if (m->wire_count == 0 && (m->flags & PG_UNMANAGED) == 0) {
- m->queue = PQ_ACTIVE;
- vm_page_queues[PQ_ACTIVE].lcnt++;
- TAILQ_INSERT_TAIL(&vm_page_queues[PQ_ACTIVE].pl, m, pageq);
if (m->act_count < ACT_INIT)
m->act_count = ACT_INIT;
- cnt.v_active_count++;
+ vm_pageq_enqueue(PQ_ACTIVE, m);
}
} else {
if (m->act_count < ACT_INIT)
@@ -1311,17 +1308,11 @@ vm_page_unwire(vm_page_t m, int activate)
cnt.v_wire_count--;
if (m->flags & PG_UNMANAGED) {
;
- } else if (activate) {
- TAILQ_INSERT_TAIL(&vm_page_queues[PQ_ACTIVE].pl, m, pageq);
- m->queue = PQ_ACTIVE;
- vm_page_queues[PQ_ACTIVE].lcnt++;
- cnt.v_active_count++;
- } else {
+ } else if (activate)
+ vm_pageq_enqueue(PQ_ACTIVE, m);
+ else {
vm_page_flag_clear(m, PG_WINATCFLS);
- TAILQ_INSERT_TAIL(&vm_page_queues[PQ_INACTIVE].pl, m, pageq);
- m->queue = PQ_INACTIVE;
- vm_page_queues[PQ_INACTIVE].lcnt++;
- cnt.v_inactive_count++;
+ vm_pageq_enqueue(PQ_INACTIVE, m);
}
}
} else {
@@ -1451,10 +1442,7 @@ vm_page_cache(vm_page_t m)
}
s = splvm();
vm_pageq_remove_nowakeup(m);
- m->queue = PQ_CACHE + m->pc;
- vm_page_queues[m->queue].lcnt++;
- TAILQ_INSERT_TAIL(&vm_page_queues[m->queue].pl, m, pageq);
- cnt.v_cache_count++;
+ vm_pageq_enqueue(PQ_CACHE + m->pc, m);
vm_page_free_wakeup();
splx(s);
}
diff --git a/sys/vm/vm_page.h b/sys/vm/vm_page.h
index 2e41cf4..d956616 100644
--- a/sys/vm/vm_page.h
+++ b/sys/vm/vm_page.h
@@ -334,13 +334,13 @@ void vm_page_free_zero(vm_page_t m);
int vm_page_sleep_busy(vm_page_t m, int also_m_busy, const char *msg);
void vm_page_dirty(vm_page_t m);
void vm_page_undirty(vm_page_t m);
-vm_page_t vm_page_list_find(int basequeue, int index, boolean_t prefer_zero);
void vm_page_wakeup(vm_page_t m);
void vm_pageq_init(void);
struct vpgqueues *vm_pageq_aquire(int queue);
void vm_pageq_release(struct vpgqueues *vpq);
vm_page_t vm_pageq_add_new_page(vm_offset_t pa);
+void vm_pageq_enqueue(int queue, vm_page_t m);
void vm_pageq_remove_nowakeup(vm_page_t m);
void vm_pageq_remove(vm_page_t m);
vm_page_t vm_pageq_find(int basequeue, int index, boolean_t prefer_zero);
@@ -359,12 +359,9 @@ vm_page_t vm_page_lookup (vm_object_t, vm_pindex_t);
void vm_page_remove (vm_page_t);
void vm_page_rename (vm_page_t, vm_object_t, vm_pindex_t);
vm_offset_t vm_page_startup (vm_offset_t, vm_offset_t, vm_offset_t);
-vm_page_t vm_add_new_page (vm_offset_t pa);
void vm_page_unmanage (vm_page_t);
void vm_page_unwire (vm_page_t, int);
void vm_page_wire (vm_page_t);
-void vm_page_unqueue (vm_page_t);
-void vm_page_unqueue_nowakeup (vm_page_t);
void vm_page_set_validclean (vm_page_t, int, int);
void vm_page_set_dirty (vm_page_t, int, int);
void vm_page_clear_dirty (vm_page_t, int, int);
@@ -372,10 +369,6 @@ void vm_page_set_invalid (vm_page_t, int, int);
int vm_page_is_valid (vm_page_t, int, int);
void vm_page_test_dirty (vm_page_t);
int vm_page_bits (int, int);
-#if 0
-int vm_page_sleep(vm_page_t m, char *msg, char *busy);
-int vm_page_asleep(vm_page_t m, char *msg, char *busy);
-#endif
void vm_page_zero_invalid(vm_page_t m, boolean_t setvalid);
void vm_page_free_toq(vm_page_t m);
void vm_page_zero_idle_wakeup(void);
diff --git a/sys/vm/vm_pageq.c b/sys/vm/vm_pageq.c
index 2e47538..c590bcd 100644
--- a/sys/vm/vm_pageq.c
+++ b/sys/vm/vm_pageq.c
@@ -82,6 +82,22 @@ vm_pageq_requeue(vm_page_t m)
}
/*
+ * vm_pageq_enqueue:
+ *
+ */
+void
+vm_pageq_enqueue(int queue, vm_page_t m)
+{
+ struct vpgqueues *vpq;
+
+ vpq = &vm_page_queues[queue];
+ m->queue = queue;
+ TAILQ_INSERT_TAIL(&vpq->pl, m, pageq);
+ ++*vpq->cnt;
+ ++vpq->lcnt;
+}
+
+/*
* vm_add_new_page:
*
* Add a new page to the freelist for use by the system.
@@ -95,14 +111,11 @@ vm_pageq_add_new_page(vm_offset_t pa)
GIANT_REQUIRED;
++cnt.v_page_count;
- ++cnt.v_free_count;
m = PHYS_TO_VM_PAGE(pa);
m->phys_addr = pa;
m->flags = 0;
m->pc = (pa >> PAGE_SHIFT) & PQ_L2_MASK;
- m->queue = m->pc + PQ_FREE;
- TAILQ_INSERT_TAIL(&vm_page_queues[m->queue].pl, m, pageq);
- vm_page_queues[m->queue].lcnt++;
+ vm_pageq_enqueue(m->pc + PQ_FREE, m);
return (m);
}
OpenPOWER on IntegriCloud