summaryrefslogtreecommitdiffstats
path: root/sys/kern/sys_pipe.c
diff options
context:
space:
mode:
authorart <art@openbsd.org>2002-01-23 00:39:46 +0000
committerart <art@openbsd.org>2002-01-23 00:39:46 +0000
commitc5790e3dc873e45d340e291e969620ee2c2b5833 (patch)
tree2960fda2237ce91790ef97f7088167ac23b1b81e /sys/kern/sys_pipe.c
parentopen for writing only if needed so, accept multiple var assignments for -w; from meself and Vladimir Popov <jumbo@narod.ru> (diff)
downloadwireguard-openbsd-c5790e3dc873e45d340e291e969620ee2c2b5833.tar.xz
wireguard-openbsd-c5790e3dc873e45d340e291e969620ee2c2b5833.zip
Pool deals fairly well with physical memory shortage, but it doesn't deal
well (not at all) with shortages of the vm_map where the pages are mapped (usually kmem_map). Try to deal with it: - group all information the backend allocator for a pool in a separate struct. The pool will only have a pointer to that struct. - change the pool_init API to reflect that. - link all pools allocating from the same allocator on a linked list. - Since an allocator is responsible to wait for physical memory it will only fail (waitok) when it runs out of its backing vm_map, carefully drain pools using the same allocator so that va space is freed. (see comments in code for caveats and details). - change pool_reclaim to return if it actually succeeded to free some memory, use that information to make draining easier and more efficient. - get rid of PR_URGENT, noone uses it.
Diffstat (limited to 'sys/kern/sys_pipe.c')
-rw-r--r--sys/kern/sys_pipe.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/kern/sys_pipe.c b/sys/kern/sys_pipe.c
index 39bc68dfc84..4543cbe9678 100644
--- a/sys/kern/sys_pipe.c
+++ b/sys/kern/sys_pipe.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: sys_pipe.c,v 1.40 2001/11/06 19:53:20 miod Exp $ */
+/* $OpenBSD: sys_pipe.c,v 1.41 2002/01/23 00:39:47 art Exp $ */
/*
* Copyright (c) 1996 John S. Dyson
@@ -846,7 +846,6 @@ void
pipe_init()
{
pool_init(&pipe_pool, sizeof(struct pipe), 0, 0, 0, "pipepl",
- 0, pool_page_alloc_nointr, pool_page_free_nointr,
- M_PIPE);
+ &pool_allocator_nointr);
}