summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorariane <ariane@openbsd.org>2011-07-08 18:25:56 +0000
committerariane <ariane@openbsd.org>2011-07-08 18:25:56 +0000
commit485235cc180b059123b91c0ccabd9ba61f4e5fe7 (patch)
tree022e4cdb80dd66ae56d56028ef7ad55db2337183
parentMove uvm_pmr_zero_everything() to subr_hibernate. (diff)
downloadwireguard-openbsd-485235cc180b059123b91c0ccabd9ba61f4e5fe7.tar.xz
wireguard-openbsd-485235cc180b059123b91c0ccabd9ba61f4e5fe7.zip
Move uvm_pmr_alloc_pig to kern/subr_hibernate.c
No callers, no functional change.
-rw-r--r--sys/kern/subr_hibernate.c46
-rw-r--r--sys/sys/hibernate.h3
-rw-r--r--sys/uvm/uvm_pmemrange.c48
-rw-r--r--sys/uvm/uvm_pmemrange.h6
4 files changed, 49 insertions, 54 deletions
diff --git a/sys/kern/subr_hibernate.c b/sys/kern/subr_hibernate.c
index f9159b5853e..b071538a289 100644
--- a/sys/kern/subr_hibernate.c
+++ b/sys/kern/subr_hibernate.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_hibernate.c,v 1.2 2011/07/08 18:20:10 ariane Exp $ */
+/* $OpenBSD: subr_hibernate.c,v 1.3 2011/07/08 18:25:56 ariane Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -262,3 +262,47 @@ uvm_pmr_zero_everything(void)
}
uvm_unlock_fpageq();
}
+
+/*
+ * Allocate the biggest contig chunk of memory.
+ */
+int
+uvm_pmr_alloc_pig(paddr_t *addr, psize_t *sz)
+{
+ struct uvm_pmemrange *pig_pmr, *pmr;
+ struct vm_page *pig_pg, *pg;
+ int memtype;
+
+ uvm_lock_fpageq();
+ pig_pg = NULL;
+ TAILQ_FOREACH(pmr, &uvm.pmr_control.use, pmr_use) {
+ for (memtype = 0; memtype < UVM_PMR_MEMTYPE_MAX; memtype++) {
+ /* Find biggest page in this memtype pmr. */
+ pg = RB_MAX(uvm_pmr_size, &pmr->size[memtype]);
+ if (pg == NULL)
+ pg = TAILQ_FIRST(&pmr->single[memtype]);
+ else
+ pg--;
+
+ if (pig_pg == NULL || (pg != NULL && pig_pg != NULL &&
+ pig_pg->fpgsz < pg->fpgsz)) {
+ pig_pmr = pmr;
+ pig_pg = pg;
+ }
+ }
+ }
+
+ /* Remove page from freelist. */
+ if (pig_pg != NULL) {
+ uvm_pmr_remove(pig_pmr, pig_pg);
+ uvmexp.free -= pig_pg->fpgsz;
+ if (pig_pg->pg_flags & PG_ZERO)
+ uvmexp.zeropages -= pig_pg->fpgsz;
+ *addr = VM_PAGE_TO_PHYS(pig_pg);
+ *sz = pig_pg->fpgsz;
+ }
+ uvm_unlock_fpageq();
+
+ /* Return. */
+ return (pig_pg != NULL ? 0 : ENOMEM);
+}
diff --git a/sys/sys/hibernate.h b/sys/sys/hibernate.h
index ebadd6ab5ed..62fd175ba63 100644
--- a/sys/sys/hibernate.h
+++ b/sys/sys/hibernate.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: hibernate.h,v 1.2 2011/07/08 18:20:10 ariane Exp $ */
+/* $OpenBSD: hibernate.h,v 1.3 2011/07/08 18:25:56 ariane Exp $ */
/*
* Copyright (c) 2011 Ariane van der Steldt <ariane@stack.nl>
@@ -39,5 +39,6 @@ void *hib_alloc(struct hiballoc_arena*, size_t);
void hib_free(struct hiballoc_arena*, void*);
int hiballoc_init(struct hiballoc_arena*, void*, size_t len);
void uvm_pmr_zero_everything(void);
+int uvm_pmr_alloc_pig(paddr_t*, psize_t*);
#endif /* _SYS_HIBERNATE_H_ */
diff --git a/sys/uvm/uvm_pmemrange.c b/sys/uvm/uvm_pmemrange.c
index c39f01f3074..5d0678af0e5 100644
--- a/sys/uvm/uvm_pmemrange.c
+++ b/sys/uvm/uvm_pmemrange.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_pmemrange.c,v 1.31 2011/07/08 18:20:10 ariane Exp $ */
+/* $OpenBSD: uvm_pmemrange.c,v 1.32 2011/07/08 18:25:56 ariane Exp $ */
/*
* Copyright (c) 2009, 2010 Ariane van der Steldt <ariane@stack.nl>
@@ -1942,49 +1942,3 @@ uvm_wakeup_pla(paddr_t low, psize_t len)
}
}
}
-
-#ifndef SMALL_KERNEL
-/*
- * Allocate the biggest contig chunk of memory.
- */
-int
-uvm_pmr_alloc_pig(paddr_t *addr, psize_t *sz)
-{
- struct uvm_pmemrange *pig_pmr, *pmr;
- struct vm_page *pig_pg, *pg;
- int memtype;
-
- uvm_lock_fpageq();
- pig_pg = NULL;
- TAILQ_FOREACH(pmr, &uvm.pmr_control.use, pmr_use) {
- for (memtype = 0; memtype < UVM_PMR_MEMTYPE_MAX; memtype++) {
- /* Find biggest page in this memtype pmr. */
- pg = RB_MAX(uvm_pmr_size, &pmr->size[memtype]);
- if (pg == NULL)
- pg = TAILQ_FIRST(&pmr->single[memtype]);
- else
- pg--;
-
- if (pig_pg == NULL || (pg != NULL && pig_pg != NULL &&
- pig_pg->fpgsz < pg->fpgsz)) {
- pig_pmr = pmr;
- pig_pg = pg;
- }
- }
- }
-
- /* Remove page from freelist. */
- if (pig_pg != NULL) {
- uvm_pmr_remove(pig_pmr, pig_pg);
- uvmexp.free -= pig_pg->fpgsz;
- if (pig_pg->pg_flags & PG_ZERO)
- uvmexp.zeropages -= pig_pg->fpgsz;
- *addr = VM_PAGE_TO_PHYS(pig_pg);
- *sz = pig_pg->fpgsz;
- }
- uvm_unlock_fpageq();
-
- /* Return. */
- return (pig_pg != NULL ? 0 : ENOMEM);
-}
-#endif /* SMALL_KERNEL */
diff --git a/sys/uvm/uvm_pmemrange.h b/sys/uvm/uvm_pmemrange.h
index 697d9637c53..680e15719b9 100644
--- a/sys/uvm/uvm_pmemrange.h
+++ b/sys/uvm/uvm_pmemrange.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: uvm_pmemrange.h,v 1.10 2011/07/08 18:20:10 ariane Exp $ */
+/* $OpenBSD: uvm_pmemrange.h,v 1.11 2011/07/08 18:25:56 ariane Exp $ */
/*
* Copyright (c) 2009 Ariane van der Steldt <ariane@stack.nl>
@@ -123,10 +123,6 @@ void uvm_wakeup_pla(paddr_t, psize_t);
int uvm_pmr_isfree(struct vm_page *pg);
#endif
-#ifndef SMALL_KERNEL
-int uvm_pmr_alloc_pig(paddr_t*, psize_t*);
-#endif /* SMALL_KERNEL */
-
/*
* Internal tree logic.
*/