/* * Sample code for the DIS Field Stressmark * * This source code is the completely correct source code based on * the example codes provided by Atlantic Aerospace Division, Titan * Systems Corporation, 2000. * * If you just compile and generate the executables from this source * code, this code would be enough. However, if you wish to get a complete * understanding of this stressmark, it is strongly suggested that you * read the Benchmark Analysis and Specifications Document Version 1.0 * before going on since the detailed comments are given in this documents. * the comments are not repeated here. */ #include #include #include #include #include "DISstressmarkRNG.h" #include "extra.h" #define MIN_FIELD_SIZE 16 #define MAX_FIELD_SIZE 16777216 #define MIN_SEED -2147483647 #define MAX_SEED -1 #define MIN_MOD_OFFSET 0 #define MAX_MOD_OFFSET 65535 #define MIN_TOKENS 1 #define MAX_TOKENS 256 #define MIN_TOKEN_LENGTH 1 #define MAX_TOKEN_LENGTH 8 #define MIN_TOKEN_VALUE 0 #define MAX_TOKEN_VALUE 255 #define MAX_SUBFIELDS 256 /* * main() */ int main(int argc, char** argv){ SET_UP unsigned char *field; unsigned int f; int seed; int mod_offset; unsigned int n; time_t startTime; struct tokenS{ unsigned char delimiter[MAX_TOKEN_LENGTH]; unsigned char length; struct statisticS{ unsigned int count; unsigned char min; unsigned char sum; }stat[MAX_SUBFIELDS]; unsigned char subfields; }token[MAX_TOKENS]; unsigned int l; fscanf(stdin, "%d %d %d %d", &f, &seed, &mod_offset, &n); assert((f >= MIN_FIELD_SIZE) && (f <= MAX_FIELD_SIZE)); assert((seed >= MIN_SEED) && (seed <= MAX_SEED)); assert((mod_offset >= MIN_MOD_OFFSET) && (mod_offset <= MAX_MOD_OFFSET)); assert((n >= MIN_TOKENS) && (n <= MAX_TOKENS)); for (l=0; l= MIN_TOKEN_VALUE) && (x <= MAX_TOKEN_VALUE)); token[l].delimiter[index] = (unsigned char )x; index++; fscanf(stdin,"%x", &x); } assert((index >= MIN_TOKEN_LENGTH) && (index <= MAX_TOKEN_LENGTH)); token[l].length = index; } if ((field = (unsigned char*)malloc(f*sizeof(unsigned char))) == NULL) return (-1); randInit(seed); for (l =0; l field[index]) token[l].stat[token[l].subfields].min = field[index]; } index++; } STOP_LOOP } startTime = time(NULL) - startTime; for (l = 0; l< n; l++){ unsigned int ll; fprintf(stdout, "%d subfields for token %d \n", token[l].subfields, l); for ( ll =0; ll