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