xref: /freebsd/contrib/sendmail/libsm/t-memstat.c (revision af9557fdd1de47bcfff61cccba2930e93ec4e69b)
14e4196cbSGregory Neil Shapiro /*
2af9557fdSGregory Neil Shapiro  * Copyright (c) 2005, 2006 Sendmail, Inc. and its suppliers.
34e4196cbSGregory Neil Shapiro  *      All rights reserved.
44e4196cbSGregory Neil Shapiro  *
54e4196cbSGregory Neil Shapiro  * By using this file, you agree to the terms and conditions set
64e4196cbSGregory Neil Shapiro  * forth in the LICENSE file which can be found at the top level of
74e4196cbSGregory Neil Shapiro  * the sendmail distribution.
84e4196cbSGregory Neil Shapiro  */
94e4196cbSGregory Neil Shapiro 
104e4196cbSGregory Neil Shapiro #include <sm/gen.h>
11af9557fdSGregory Neil Shapiro SM_IDSTR(id, "@(#)$Id: t-memstat.c,v 1.6 2006/03/27 22:34:47 ca Exp $")
124e4196cbSGregory Neil Shapiro 
134e4196cbSGregory Neil Shapiro /*
144e4196cbSGregory Neil Shapiro **  Simple test program for memstat
154e4196cbSGregory Neil Shapiro */
164e4196cbSGregory Neil Shapiro 
174e4196cbSGregory Neil Shapiro #include <stdlib.h>
184e4196cbSGregory Neil Shapiro #include <unistd.h>
194e4196cbSGregory Neil Shapiro #include <stdio.h>
204e4196cbSGregory Neil Shapiro #include <strings.h>
21af9557fdSGregory Neil Shapiro #include <string.h>
22af9557fdSGregory Neil Shapiro 
23af9557fdSGregory Neil Shapiro extern char *optarg;
24af9557fdSGregory Neil Shapiro extern int optind;
254e4196cbSGregory Neil Shapiro 
264e4196cbSGregory Neil Shapiro int
274e4196cbSGregory Neil Shapiro main(argc, argv)
284e4196cbSGregory Neil Shapiro 	int argc;
294e4196cbSGregory Neil Shapiro 	char **argv;
304e4196cbSGregory Neil Shapiro {
314e4196cbSGregory Neil Shapiro 	int r, r2, i, l, slp, sz;
324e4196cbSGregory Neil Shapiro 	long v;
334e4196cbSGregory Neil Shapiro 	char *resource;
344e4196cbSGregory Neil Shapiro 
354e4196cbSGregory Neil Shapiro 	l = 1;
364e4196cbSGregory Neil Shapiro 	sz = slp = 0;
374e4196cbSGregory Neil Shapiro 	resource = NULL;
384e4196cbSGregory Neil Shapiro 	while ((r = getopt(argc, argv, "l:m:r:s:")) != -1)
394e4196cbSGregory Neil Shapiro 	{
404e4196cbSGregory Neil Shapiro 		switch ((char) r)
414e4196cbSGregory Neil Shapiro 		{
424e4196cbSGregory Neil Shapiro 		  case 'l':
434e4196cbSGregory Neil Shapiro 			l = strtol(optarg, NULL, 0);
444e4196cbSGregory Neil Shapiro 			break;
454e4196cbSGregory Neil Shapiro 
464e4196cbSGregory Neil Shapiro 		  case 'm':
474e4196cbSGregory Neil Shapiro 			sz = strtol(optarg, NULL, 0);
484e4196cbSGregory Neil Shapiro 			break;
494e4196cbSGregory Neil Shapiro 
504e4196cbSGregory Neil Shapiro 		  case 'r':
514e4196cbSGregory Neil Shapiro 			resource = strdup(optarg);
524e4196cbSGregory Neil Shapiro 			break;
534e4196cbSGregory Neil Shapiro 
544e4196cbSGregory Neil Shapiro 		  case 's':
554e4196cbSGregory Neil Shapiro 			slp = strtol(optarg, NULL, 0);
564e4196cbSGregory Neil Shapiro 			break;
574e4196cbSGregory Neil Shapiro 
584e4196cbSGregory Neil Shapiro 		  default:
594e4196cbSGregory Neil Shapiro 			break;
604e4196cbSGregory Neil Shapiro 		}
614e4196cbSGregory Neil Shapiro 	}
624e4196cbSGregory Neil Shapiro 
634e4196cbSGregory Neil Shapiro 	r = sm_memstat_open();
644e4196cbSGregory Neil Shapiro 	r2 = -1;
654e4196cbSGregory Neil Shapiro 	for (i = 0; i < l; i++)
664e4196cbSGregory Neil Shapiro 	{
674e4196cbSGregory Neil Shapiro 		char *mem;
684e4196cbSGregory Neil Shapiro 
694e4196cbSGregory Neil Shapiro 		r2 = sm_memstat_get(resource, &v);
704e4196cbSGregory Neil Shapiro 		if (slp > 0 && i + 1 < l && 0 == r)
714e4196cbSGregory Neil Shapiro 		{
724e4196cbSGregory Neil Shapiro 			printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
734e4196cbSGregory Neil Shapiro 				resource != NULL ? resource : "default-value",
744e4196cbSGregory Neil Shapiro 				v);
754e4196cbSGregory Neil Shapiro 			sleep(slp);
764e4196cbSGregory Neil Shapiro 			if (sz > 0)
774e4196cbSGregory Neil Shapiro 			{
784e4196cbSGregory Neil Shapiro 				/*
794e4196cbSGregory Neil Shapiro 				**  Just allocate some memory to test the
804e4196cbSGregory Neil Shapiro 				**  values that are returned.
814e4196cbSGregory Neil Shapiro 				**  Note: this is a memory leak, but that
824e4196cbSGregory Neil Shapiro 				**  doesn't matter here.
834e4196cbSGregory Neil Shapiro 				*/
844e4196cbSGregory Neil Shapiro 
854e4196cbSGregory Neil Shapiro 				mem = malloc(sz);
864e4196cbSGregory Neil Shapiro 				if (NULL == mem)
874e4196cbSGregory Neil Shapiro 					printf("malloc(%d) failed\n", sz);
884e4196cbSGregory Neil Shapiro 			}
894e4196cbSGregory Neil Shapiro 		}
904e4196cbSGregory Neil Shapiro 	}
914e4196cbSGregory Neil Shapiro 	printf("open=%d, memstat=%d, %s=%ld\n", r, r2,
924e4196cbSGregory Neil Shapiro 		resource != NULL ? resource : "default-value", v);
934e4196cbSGregory Neil Shapiro 	r = sm_memstat_close();
944e4196cbSGregory Neil Shapiro 	return r;
954e4196cbSGregory Neil Shapiro }
96