t-rpool.c revision 266527
1251881Speter/* 2251881Speter * Copyright (c) 2000-2001 Proofpoint, Inc. and its suppliers. 3251881Speter * All rights reserved. 4251881Speter * 5251881Speter * By using this file, you agree to the terms and conditions set 6251881Speter * forth in the LICENSE file which can be found at the top level of 7251881Speter * the sendmail distribution. 8251881Speter */ 9251881Speter 10251881Speter#include <sm/gen.h> 11251881SpeterSM_IDSTR(id, "@(#)$Id: t-rpool.c,v 1.19 2013-11-22 20:51:43 ca Exp $") 12251881Speter 13251881Speter#include <sm/debug.h> 14251881Speter#include <sm/heap.h> 15251881Speter#include <sm/rpool.h> 16251881Speter#include <sm/io.h> 17251881Speter#include <sm/test.h> 18251881Speter 19251881Speterstatic void 20251881Speterrfree __P(( 21251881Speter void *cx)); 22251881Speter 23251881Speterstatic void 24251881Speterrfree(cx) 25251881Speter void *cx; 26251881Speter{ 27251881Speter (void) sm_io_fprintf(smioout, SM_TIME_DEFAULT, "rfree freeing `%s'\n", 28251881Speter (char *) cx); 29251881Speter} 30251881Speter 31251881Speterint 32251881Spetermain(argc, argv) 33251881Speter int argc; 34251881Speter char *argv[]; 35251881Speter{ 36251881Speter SM_RPOOL_T *rpool; 37251881Speter char *a[26]; 38251881Speter int i, j; 39251881Speter SM_RPOOL_ATTACH_T att; 40251881Speter 41251881Speter sm_test_begin(argc, argv, "test rpool"); 42251881Speter sm_debug_addsetting_x("sm_check_heap", 1); 43251881Speter rpool = sm_rpool_new_x(NULL); 44251881Speter SM_TEST(rpool != NULL); 45251881Speter att = sm_rpool_attach_x(rpool, rfree, "attachment #1"); 46251881Speter SM_TEST(att != NULL); 47251881Speter for (i = 0; i < 26; ++i) 48251881Speter { 49251881Speter size_t sz = i * i * i; 50251881Speter 51251881Speter a[i] = sm_rpool_malloc_x(rpool, sz); 52251881Speter for (j = 0; j < sz; ++j) 53251881Speter a[i][j] = 'a' + i; 54251881Speter } 55251881Speter att = sm_rpool_attach_x(rpool, rfree, "attachment #2"); 56251881Speter (void) sm_rpool_attach_x(rpool, rfree, "attachment #3"); 57251881Speter sm_rpool_detach(att); 58251881Speter 59251881Speter /* XXX more tests? */ 60251881Speter#if DEBUG 61251881Speter sm_dprintf("heap after filling up rpool:\n"); 62251881Speter sm_heap_report(smioout, 3); 63251881Speter sm_dprintf("freeing rpool:\n"); 64251881Speter sm_rpool_free(rpool); 65251881Speter sm_dprintf("heap after freeing rpool:\n"); 66251881Speter sm_heap_report(smioout, 3); 67251881Speter#endif /* DEBUG */ 68251881Speter return sm_test_end(); 69251881Speter} 70251881Speter