summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_pool.c
diff options
context:
space:
mode:
authortedu <tedu@openbsd.org>2019-02-10 20:05:04 +0000
committertedu <tedu@openbsd.org>2019-02-10 20:05:04 +0000
commit7d335b5a08ebbd3bbbddac55da0218b99f53611a (patch)
tree3bdacabc2aecf6af467c199036cdb34576809dca /sys/kern/subr_pool.c
parentmake it possible to reduce kmem pressure by letting some pools use a more (diff)
downloadwireguard-openbsd-7d335b5a08ebbd3bbbddac55da0218b99f53611a.tar.xz
wireguard-openbsd-7d335b5a08ebbd3bbbddac55da0218b99f53611a.zip
if waitok flag is set, have the interrupt multipage allocator redirect
to the not interrupt allocator.
Diffstat (limited to 'sys/kern/subr_pool.c')
-rw-r--r--sys/kern/subr_pool.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/kern/subr_pool.c b/sys/kern/subr_pool.c
index fbe077a5d61..f924edd6a39 100644
--- a/sys/kern/subr_pool.c
+++ b/sys/kern/subr_pool.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: subr_pool.c,v 1.224 2019/02/10 20:02:37 tedu Exp $ */
+/* $OpenBSD: subr_pool.c,v 1.225 2019/02/10 20:05:04 tedu Exp $ */
/* $NetBSD: subr_pool.c,v 1.61 2001/09/26 07:14:56 chs Exp $ */
/*-
@@ -1638,6 +1638,9 @@ pool_multi_alloc(struct pool *pp, int flags, int *slowdown)
void *v;
int s;
+ if (flags & PR_WAITOK)
+ return pool_multi_alloc_ni(pp, flags, slowdown);
+
if (POOL_INPGHDR(pp))
kv.kv_align = pp->pr_pgsize;
@@ -1657,6 +1660,11 @@ pool_multi_free(struct pool *pp, int flags, void *v)
struct kmem_va_mode kv = kv_intrsafe;
int s;
+ if (flags & PR_WAITOK) {
+ pool_multi_free_ni(pp, flags, v);
+ return;
+ }
+
if (POOL_INPGHDR(pp))
kv.kv_align = pp->pr_pgsize;