Use struct for score, add function to increment from char

This commit is contained in:
Adam Goldsmith 2016-04-28 01:40:54 -04:00
parent a31fde98e4
commit 60fc5d1f0a
1 changed files with 19 additions and 3 deletions

22
csim.c
View File

@ -31,6 +31,12 @@ struct linked_line_s {
linked_line* older; linked_line* older;
}; };
typedef struct {
int hits;
int misses;
int evictions;
} results;
/* Macros */ /* Macros */
#define mprintf(...) if (VERBOSE) printf(__VA_ARGS__) #define mprintf(...) if (VERBOSE) printf(__VA_ARGS__)
@ -53,12 +59,17 @@ uint8_t VERBOSE = 0; /**< If nonzero, mprintf will not print. Set in main() if -
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
int hits = 0, misses = 0, evictions = 0; results score;
char buffer[20]; char buffer[20];
int set_index_bits = 0, block_bits = 0; // Not-useful input variables. int set_index_bits = 0, block_bits = 0; // Not-useful input variables.
long set_indices = 0, num_lines = 0, block_size = 0; //Useful variables long set_indices = 0, num_lines = 0, block_size = 0; //Useful variables
char *filename = NULL; char *filename = NULL;
int opt = 0; int opt = 0;
score.hits = 0;
score.misses = 0;
score.evictions = 0;
while ((opt=getopt(argc, argv, "hvs:E:b:t:")) != -1) { while ((opt=getopt(argc, argv, "hvs:E:b:t:")) != -1) {
switch (opt) { switch (opt) {
/* TODO: maybe add checking for optarg swallowing actual arguments. */ /* TODO: maybe add checking for optarg swallowing actual arguments. */
@ -120,7 +131,7 @@ int main(int argc, char* argv[])
printf("%c %ld\n", op, address); printf("%c %ld\n", op, address);
} }
printSummary(hits, misses, evictions); printSummary(score.hits, score.misses, score.evictions);
fclose(f); fclose(f);
free_cache(cache, set_index_bits); free_cache(cache, set_index_bits);
@ -128,7 +139,12 @@ int main(int argc, char* argv[])
return 0; return 0;
} }
void increment_result_counters(char result, results* score)
{
score->hits += (result == 'H');
score->misses += (result == 'M' || result == 'E');
score->evictions += (result == 'E');
}
linked_line** make_cache(long set_indices, long num_lines) linked_line** make_cache(long set_indices, long num_lines)