From 2c1f3641dace25512144fcf6b3aca1f843057671 Mon Sep 17 00:00:00 2001
From: whh8b <whh8b@git.zephyr-software.com>
Date: Wed, 11 May 2016 17:31:38 +0000
Subject: [PATCH] Updates to factor out debugging/demo code.

---
 mixr/mixr.c | 34 ++++++++++++++++++++++++++++++++--
 1 file changed, 32 insertions(+), 2 deletions(-)

diff --git a/mixr/mixr.c b/mixr/mixr.c
index d3a07bc..915e348 100644
--- a/mixr/mixr.c
+++ b/mixr/mixr.c
@@ -55,6 +55,10 @@ static int q_fd;
 	#define assert(a)
 #endif
 
+#ifndef POLICY_RANDOM_MAX_ITERATIONS 
+#define POLICY_RANDOM_MAX_ITERATIONS 10
+#endif
+
 int _mprotect(void *addr, size_t len, int flags);
 void _memcpy(void *dst, const void *src, unsigned long int len);
 
@@ -197,7 +201,11 @@ void mixr_active_dollops_mark_from_stack(void *table_addr) {
 uint64_t read_random64(void) {
 	unsigned long long random_value = -1;
 	int fd = -1;
+#ifdef CFAR
+	fd = open("/dev/cfar_urandom", 0x00, 0x00);
+#else
 	fd = open("/dev/urandom", 0x00, 0x00);
+#endif
 	if (fd != -1) {
 		read(fd, (void*)&random_value, sizeof(unsigned long long));
 		close(fd);
@@ -567,7 +575,12 @@ void mixr_do_rw(uint64_t dollop_start, struct rw_table_entry rw_entry)
 void zipr_mixr(void *table_addr)
 {
 	uint64_t table_length = 0;
+#ifdef POLICY_RANDOM
+	uint64_t random_iterator = 0;
+	uint64_t random_iterator_max = POLICY_RANDOM_MAX_ITERATIONS;
+#else
 	uint64_t table_iterator = 2;
+#endif
 	uint64_t table_fixed_size = 0;
 
 	uint64_t q_value = 0xab;
@@ -582,9 +595,20 @@ void zipr_mixr(void *table_addr)
 #endif
 
 	mixr_active_dollops_mark_from_stack(table_addr);
-	for (table_iterator = 1; table_iterator<table_length; table_iterator+=2)
+#ifdef POLICY_RANDOM
+	for (random_iterator=0;random_iterator<random_iterator_max;random_iterator++)
+#else
+	for (table_iterator=1;table_iterator<table_length;table_iterator+=2)
+#endif
 	{
+#ifdef POLICY_RANDOM
+		uint64_t a = read_random64() % table_length;
+		uint64_t b = read_random64() % table_length;
+#else
 		uint64_t a = table_iterator, b = a-1;
+		volatile uint64_t c = read_random64() % table_length;
+		volatile uint64_t d = read_random64() % table_length;
+#endif
 		uint64_t dt_address_a = dt_table_read_entry_address(table_addr, a);
 		uint16_t dt_offset_a = dt_table_read_entry_offset(table_addr, a);
 		uint64_t rw_address_a = dt_address_a + dt_offset_a;
@@ -672,11 +696,17 @@ void zipr_mixr(void *table_addr)
 
 #ifdef DEMO
 	dt_table_write_to_file(table_addr, "/tmp/testwrite.bin");
-#endif
 
 	if (q_fd == -1)
+	{
+		print_str_debug("Attempting to open fifo q file handle.");
 		q_fd = mixr_open_fifo_q("/tmp/testfifo.txt");
+	}
+	print_str_debug("Attempting to write to fifo q file handle:");
+	print_int_debug(q_fd);
+	print_str_debug("\n");
 	write(q_fd, (const char *)&q_value, sizeof(uint64_t));	
+#endif
 }
 
 void zipr_hook_start(unsigned long long id,
-- 
GitLab