From 6ea9939e0610a809f6f47d13ec68df00d1ca0afc Mon Sep 17 00:00:00 2001 From: Joshua Bakita Date: Fri, 16 Oct 2020 16:55:14 -0400 Subject: Move the DIS benchmarks up a directory and update hardcoded paths Note that this repo does not attempt to keep a copy of the original DIS benchmark distributions. UNC real-time has another repo for that. --- dis/Field/field.c | 153 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 153 insertions(+) create mode 100644 dis/Field/field.c (limited to 'dis/Field/field.c') diff --git a/dis/Field/field.c b/dis/Field/field.c new file mode 100644 index 0000000..8565e8c --- /dev/null +++ b/dis/Field/field.c @@ -0,0 +1,153 @@ +/* + * 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*4) // This has been quadrupled from original +#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; + + assert(fscanf(stdin, "%d %d %d %d", &f, &seed, &mod_offset, &n) == 4); + + 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++; + assert(fscanf(stdin,"%x", &x) == 1); + } + 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++; + } + token[l].subfields++; + 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