Logo Search packages:      
Sourcecode: batv-milter version File versions  Download package

t-memstat.c

/*
 * 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;
}

Generated by  Doxygen 1.6.0   Back to index