summaryrefslogtreecommitdiffstats
path: root/sendmail/libsm/t-memstat.c
diff options
context:
space:
mode:
Diffstat (limited to 'sendmail/libsm/t-memstat.c')
-rw-r--r--sendmail/libsm/t-memstat.c110
1 files changed, 110 insertions, 0 deletions
diff --git a/sendmail/libsm/t-memstat.c b/sendmail/libsm/t-memstat.c
new file mode 100644
index 0000000..3bfe394
--- /dev/null
+++ b/sendmail/libsm/t-memstat.c
@@ -0,0 +1,110 @@
+/*
+ * Copyright (c) 2005-2007 Sendmail, Inc. and its suppliers.
+ * All rights reserved.
+ *
+ * By using this file, you agree to the terms and conditions set
+ * forth in the LICENSE file which can be found at the top level of
+ * the sendmail distribution.
+ */
+
+#include <sm/gen.h>
+SM_IDSTR(id, "@(#)$Id: t-memstat.c,v 1.9 2007/03/14 21:41:09 ca Exp $")
+
+#include <sm/misc.h>
+
+/*
+** Simple test program for memstat
+*/
+
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <strings.h>
+#include <string.h>
+
+extern char *optarg;
+extern int optind;
+
+void
+usage(prg)
+ char *prg;
+{
+ fprintf(stderr, "usage: %s [options]\n", prg);
+ fprintf(stderr, "options:\n");
+ fprintf(stderr, "-l n loop n times\n");
+ fprintf(stderr, "-m n allocate n bytes per iteration\n");
+ fprintf(stderr, "-r name use name as resource to query\n");
+ fprintf(stderr, "-s n sleep n seconds per iteration\n");
+}
+
+int
+main(argc, argv)
+ int argc;
+ char **argv;
+{
+ int r, r2, i, l, slp, sz;
+ long v;
+ char *resource;
+
+ l = 1;
+ sz = slp = 0;
+ resource = NULL;
+ while ((r = getopt(argc, argv, "l:m:r:s:")) != -1)
+ {
+ switch ((char) r)
+ {
+ case 'l':
+ l = strtol(optarg, NULL, 0);
+ break;
+
+ case 'm':
+ sz = strtol(optarg, NULL, 0);
+ break;
+
+ case 'r':
+ resource = strdup(optarg);
+ break;
+
+ case 's':
+ slp = strtol(optarg, NULL, 0);
+ break;
+
+ default:
+ usage(argv[0]);
+ exit(1);
+ }
+ }
+
+ r = sm_memstat_open();
+ r2 = -1;
+ for (i = 0; i < l; i++)
+ {
+ char *mem;
+
+ r2 = sm_memstat_get(resource, &v);
+ if (slp > 0 && i + 1 < l && 0 == r)
+ {
+ printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
+ resource != NULL ? resource : "default-value",
+ v);
+ sleep(slp);
+ if (sz > 0)
+ {
+ /*
+ ** Just allocate some memory to test the
+ ** values that are returned.
+ ** Note: this is a memory leak, but that
+ ** doesn't matter here.
+ */
+
+ mem = malloc(sz);
+ if (NULL == mem)
+ printf("malloc(%d) failed\n", sz);
+ }
+ }
+ }
+ printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
+ resource != NULL ? resource : "default-value", v);
+ r = sm_memstat_close();
+ return r;
+}
OpenPOWER on IntegriCloud