#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>
#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)
{
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;
}