Annotation of embedaddon/ntp/ElectricFence/tstheap.c, revision 1.1
1.1 ! misho 1: #include <stdlib.h>
! 2: #include <stdio.h>
! 3: #include <math.h>
! 4: #include <limits.h>
! 5: #include "efence.h"
! 6:
! 7: /*
! 8: * This is a simple program to exercise the allocator. It allocates and frees
! 9: * memory in a pseudo-random fashion. It should run silently, using up time
! 10: * and resources on your system until you stop it or until it has gone
! 11: * through TEST_DURATION (or the argument) iterations of the loop.
! 12: */
! 13:
! 14: extern C_LINKAGE double drand48(void); /* For pre-ANSI C systems */
! 15:
! 16: #define POOL_SIZE 1024
! 17: #define LARGEST_BUFFER 30000
! 18: #define TEST_DURATION 1000000
! 19:
! 20: void * pool[POOL_SIZE];
! 21:
! 22: #ifdef FAKE_DRAND48
! 23: /*
! 24: * Add -DFAKE_DRAND48 to your compile flags if your system doesn't
! 25: * provide drand48().
! 26: */
! 27:
! 28: #ifndef ULONG_MAX
! 29: #define ULONG_MAX ~(1L)
! 30: #endif
! 31:
! 32: double
! 33: drand48(void)
! 34: {
! 35: return (random() / (double)ULONG_MAX);
! 36: }
! 37: #endif
! 38:
! 39: int
! 40: main(int argc, char * * argv)
! 41: {
! 42: int count = 0;
! 43: int duration = TEST_DURATION;
! 44:
! 45: if ( argc >= 2 )
! 46: duration = atoi(argv[1]);
! 47:
! 48: for ( ; count < duration; count++ ) {
! 49: void * * element = &pool[(int)(drand48() * POOL_SIZE)];
! 50: size_t size = (size_t)(drand48() * (LARGEST_BUFFER + 1));
! 51:
! 52: if ( *element ) {
! 53: free( *element );
! 54: *element = 0;
! 55: }
! 56: else if ( size > 0 ) {
! 57: *element = malloc(size);
! 58: }
! 59: }
! 60: return 0;
! 61: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>