[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox-cvs
Subject: [git commit] ash: memalloc: Avoid looping in growstackto
From: Denys Vlasenko <vda.linux () googlemail ! com>
Date: 2020-02-21 14:25:37
Message-ID: 20200221161104.B9AB08E70B () busybox ! osuosl ! org
[Download RAW message or body]
commit: https://git.busybox.net/busybox/commit/?id=da2e46dff6576c29fa1d379c943bb7943aa6e7ce
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
Upstream commit:
Date: Thu, 31 May 2018 01:51:48 +0800
memalloc: Avoid looping in growstackto
Currently growstackto will repeatedly call growstackblock until
the requisite size is obtained. This is wasteful. This patch
changes growstackblock to take a minimum size instead.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
---
shell/ash.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/shell/ash.c b/shell/ash.c
index fd2fc9f23..8d1822847 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -1678,15 +1678,16 @@ popstackmark(struct stackmark *mark)
* part of the block that has been used.
*/
static void
-growstackblock(void)
+growstackblock(size_t min)
{
size_t newlen;
newlen = g_stacknleft * 2;
if (newlen < g_stacknleft)
ash_msg_and_raise_error(bb_msg_memory_exhausted);
- if (newlen < 128)
- newlen += 128;
+ min = SHELL_ALIGN(min | 128);
+ if (newlen < min)
+ newlen += min;
if (g_stacknxt == g_stackp->space && g_stackp != &stackbase) {
struct stack_block *sp;
@@ -1736,16 +1737,15 @@ static void *
growstackstr(void)
{
size_t len = stackblocksize();
- growstackblock();
+ growstackblock(0);
return (char *)stackblock() + len;
}
static char *
growstackto(size_t len)
{
- while (stackblocksize() < len)
- growstackblock();
-
+ if (stackblocksize() < len)
+ growstackblock(len);
return stackblock();
}
_______________________________________________
busybox-cvs mailing list
busybox-cvs@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox-cvs
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic