git: 9front

Download patch

ref: 3f6cb04b6ce630c827e52766fd7d624255871e03
parent: 9e6b56fd894f1afeff602d906c331b19e5302c46
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Sun Mar 18 16:12:29 EDT 2012

make pc kernels graphics image memory pool unlimited by default, add *imagemaxmb= kernel parameter

--- a/sys/man/8/plan9.ini
+++ b/sys/man/8/plan9.ini
@@ -667,6 +667,10 @@
 .IR draw (3)
 maintains its graphic images in kernel memory.
 This deprecated option is rarely necessary in newer kernels.
+.SS \fL*imagemaxmb=\fIvalue\fP
+This limits the maximum amount of memory (in megabytes) the graphics
+image memory pool can grow. The default is unlimited for terminals
+and cpu servers.
 .SS \fL*nomce=\fIvalue\fP
 If machine check exceptions are supported by the processor,
 then they are enabled by default.
--- a/sys/src/9/pc/main.c
+++ b/sys/src/9/pc/main.c
@@ -415,7 +415,7 @@
 		 * 4MB on the first Image chunk allocation.
 		 */
 		if(conf.npage*BY2PG < 16*MB)
-			imagmem->minarena = 4*1024*1024;
+			imagmem->minarena = 4*MB;
 	}
 
 	/*
@@ -440,13 +440,16 @@
 		+ conf.nswap
 		+ conf.nswppo*sizeof(Page*);
 	mainmem->maxsize = kpages;
-	if(!cpuserver){
-		/*
-		 * give terminals lots of image memory, too; the dynamic
-		 * allocation will balance the load properly, hopefully.
-		 * be careful with 32-bit overflow.
-		 */
-		imagmem->maxsize = kpages;
+
+	/*
+	 * the dynamic allocation will balance the load properly,
+	 * hopefully. be careful with 32-bit overflow.
+	 */
+	imagmem->maxsize = mainmem->maxsize;
+	if(p = getconf("*imagemaxmb")){
+		imagmem->maxsize = strtol(p, nil, 0)*MB;
+		if(imagmem->maxsize > mainmem->maxsize)
+			imagmem->maxsize = mainmem->maxsize;
 	}
 }
 
--