t-memstat.c revision 157001
1157001Sgshapiro/*
2157001Sgshapiro * Copyright (c) 2005 Sendmail, Inc. and its suppliers.
3157001Sgshapiro *      All rights reserved.
4157001Sgshapiro *
5157001Sgshapiro * By using this file, you agree to the terms and conditions set
6157001Sgshapiro * forth in the LICENSE file which can be found at the top level of
7157001Sgshapiro * the sendmail distribution.
8157001Sgshapiro */
9157001Sgshapiro
10157001Sgshapiro#include <sm/gen.h>
11157001SgshapiroSM_IDSTR(id, "@(#)$Id: t-memstat.c,v 1.5 2005/12/22 19:05:42 ca Exp $")
12157001Sgshapiro
13157001Sgshapiro/*
14157001Sgshapiro** Simple test program for memstat
15157001Sgshapiro*/
16157001Sgshapiro
17157001Sgshapiro#include <stdlib.h>
18157001Sgshapiro#include <unistd.h>
19157001Sgshapiro#include <stdio.h>
20157001Sgshapiro#include <strings.h>
21157001Sgshapiro
22157001Sgshapiroint
23157001Sgshapiromain(argc, argv)
24157001Sgshapiro	int argc;
25157001Sgshapiro	char **argv;
26157001Sgshapiro{
27157001Sgshapiro	int r, r2, i, l, slp, sz;
28157001Sgshapiro	long v;
29157001Sgshapiro	char *resource;
30157001Sgshapiro
31157001Sgshapiro	l = 1;
32157001Sgshapiro	sz = slp = 0;
33157001Sgshapiro	resource = NULL;
34157001Sgshapiro	while ((r = getopt(argc, argv, "l:m:r:s:")) != -1)
35157001Sgshapiro	{
36157001Sgshapiro		switch ((char) r)
37157001Sgshapiro		{
38157001Sgshapiro		  case 'l':
39157001Sgshapiro			l = strtol(optarg, NULL, 0);
40157001Sgshapiro			break;
41157001Sgshapiro
42157001Sgshapiro		  case 'm':
43157001Sgshapiro			sz = strtol(optarg, NULL, 0);
44157001Sgshapiro			break;
45157001Sgshapiro
46157001Sgshapiro		  case 'r':
47157001Sgshapiro			resource = strdup(optarg);
48157001Sgshapiro			break;
49157001Sgshapiro
50157001Sgshapiro		  case 's':
51157001Sgshapiro			slp = strtol(optarg, NULL, 0);
52157001Sgshapiro			break;
53157001Sgshapiro
54157001Sgshapiro		  default:
55157001Sgshapiro			break;
56157001Sgshapiro		}
57157001Sgshapiro	}
58157001Sgshapiro
59157001Sgshapiro	r = sm_memstat_open();
60157001Sgshapiro	r2 = -1;
61157001Sgshapiro	for (i = 0; i < l; i++)
62157001Sgshapiro	{
63157001Sgshapiro		char *mem;
64157001Sgshapiro
65157001Sgshapiro		r2 = sm_memstat_get(resource, &v);
66157001Sgshapiro		if (slp > 0 && i + 1 < l && 0 == r)
67157001Sgshapiro		{
68157001Sgshapiro			printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
69157001Sgshapiro				resource != NULL ? resource : "default-value",
70157001Sgshapiro				v);
71157001Sgshapiro			sleep(slp);
72157001Sgshapiro			if (sz > 0)
73157001Sgshapiro			{
74157001Sgshapiro				/*
75157001Sgshapiro				**  Just allocate some memory to test the
76157001Sgshapiro				**  values that are returned.
77157001Sgshapiro				**  Note: this is a memory leak, but that
78157001Sgshapiro				**  doesn't matter here.
79157001Sgshapiro				*/
80157001Sgshapiro
81157001Sgshapiro				mem = malloc(sz);
82157001Sgshapiro				if (NULL == mem)
83157001Sgshapiro					printf("malloc(%d) failed\n", sz);
84157001Sgshapiro			}
85157001Sgshapiro		}
86157001Sgshapiro	}
87157001Sgshapiro	printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
88157001Sgshapiro		resource != NULL ? resource : "default-value", v);
89157001Sgshapiro	r = sm_memstat_close();
90157001Sgshapiro	return r;
91157001Sgshapiro}
92