From: Faiyaz Ahmed Date: Tue, 25 Jul 2006 18:09:19 +0000 (+0000) Subject: Stops growing after reaching specified size and waits.. X-Git-Tag: planetlab-4_0-rc1~32 X-Git-Url: http://git.onelab.eu/?p=mom.git;a=commitdiff_plain;h=285c8e68bd119b577ea04ed4dd25ff9b415a9bc7 Stops growing after reaching specified size and waits.. --- diff --git a/leak.c b/leak.c index 271d41b..dfd6fa5 100644 --- a/leak.c +++ b/leak.c @@ -4,7 +4,7 @@ * Mark Huang * Copyright (C) 2006 The Trustees of Princeton University * - * $Id$ + * $Id: leak.c,v 1.1 2006/05/01 18:28:22 mlhuang Exp $ */ #include @@ -16,17 +16,19 @@ int main(int argc, char *argv[]) { int rate = 16; + int size = 1; int leaked; for (;;) { int c, option_index = 0; static struct option long_options[] = { { "rate", required_argument, NULL, 'r' }, + { "size", optional_argument, NULL, 's' }, { "help", no_argument, NULL, 'h' }, { 0, 0, 0, 0 } }; - c = getopt_long(argc, argv, "r:h", long_options, &option_index); + c = getopt_long(argc, argv, "r:h:s", long_options, &option_index); if (c == -1) break; @@ -34,10 +36,14 @@ main(int argc, char *argv[]) case 'r': rate = atoi(optarg); break; + case 's': + size = atoi(optarg); + break; case 'h': default: fprintf(stderr, "Usage: %s [OPTION]...\n", argv[0]); fprintf(stderr, "\t-r, --rate=MiB/sec\tRate to leak memory in MiB/sec\n"); + fprintf(stderr, "\t-s, --size=MiB\tGrow to size and wait.\n"); return 0; } } @@ -46,7 +52,7 @@ main(int argc, char *argv[]) for (;;) { int i, bufsize = rate * 1024 * 1024; char *buf = malloc(bufsize); - if (buf) { + if (buf && (leaked <= size)) { /* Touch every page in the buffer */ for (i = 0; i < bufsize; i += 4096) buf[i] = 1;