Subject: Adding a size parameter to stackgap_init()
To: None <tech-kern@netbsd.org>
From: Emmanuel Dreyfus <manu@netbsd.org>
List: tech-kern
Date: 03/16/2002 20:39:57
Hi!

This is still about increasing STACKGAPLEN. I suggested increasing it,
but I have situations where the requiered space cannot be determined at
build time (eg: if you need one struct systent per swap object, this
makes 1048 * number of swap objects)

It would be nice to have a size parameter to stackgap_init(). To avoid a
large amount of modification, I propose to introduce
stackgap_init_sz(), which would do a stackgap initialization with a size
argument, and to define stackgap_init() as stackgap_init_sz() with a
STACKGAPLEN size.

Here is the patch. Is this nice enough to be committed?


Index: compat_util.c
===================================================================
RCS file: /cvsroot/syssrc/sys/compat/common/compat_util.c,v
retrieving revision 1.21
diff -U2 -r1.21 compat_util.c
--- compat_util.c       2001/11/13 02:07:59     1.21
+++ compat_util.c       2002/03/16 19:32:26
@@ -239,6 +239,7 @@
 
 caddr_t
-stackgap_init(e)
+stackgap_init_sz(e, size)
        const struct emul *e;
+       size_t size;
 {
        struct proc *p = curproc;               /* XXX */
@@ -246,5 +247,5 @@
 #define szsigcode ((caddr_t)(e->e_esigcode - e->e_sigcode))
        return (caddr_t)(((unsigned long)p->p_psstr - (unsigned
long)szsigcode
-               - STACKGAPLEN) & ~ALIGNBYTES);
+               - size) & ~ALIGNBYTES);
 #undef szsigcode
 }
Index: compat_util.h
===================================================================
RCS file: /cvsroot/syssrc/sys/compat/common/compat_util.h,v
retrieving revision 1.9
diff -U2 -r1.9 compat_util.h
--- compat_util.h       2001/01/22 19:50:56     1.9
+++ compat_util.h       2002/03/16 19:32:26
@@ -68,4 +68,5 @@
 #define        _COMPAT_UTIL_H_
 
+#include <sys/exec.h>
 struct emul;
 struct proc;
@@ -77,5 +78,6 @@
 };
 
-caddr_t        stackgap_init __P((const struct emul *));
+caddr_t        stackgap_init_sz __P((const struct emul *, size_t));
+#define stackgap_init(e) stackgap_init_sz((e),STACKGAPLEN)
 void   *stackgap_alloc __P((caddr_t *, size_t));
 
-- 
Emmanuel Dreyfus
- Quel est le meilleur moyen d'accelerer un PC?
- 9,81 m/s^2
manu@netbsd.org