Version 1.1 Update
[ctprof_srv/ctprof_srv.git] / example_app / ctprof_ex.c
index 4e44a2566ee716b57993adecb97e5e6323e713a5..839baee36356456346a606549058a935989337e4 100644 (file)
@@ -45,7 +45,7 @@
 #include <fcntl.h>
 #include "ctprof_utility.h"
 
-const int g_major_version = 0;
+const int g_major_version = 1;
 const int g_minor_version = 1;
 const int g_copyright_year = 2013;
 
@@ -64,7 +64,7 @@ struct memory_blk_t memory_table[] = {
     {"Corepac L2_0", 0x10800000, 0, 1024*1024}, /* Corepac 0 L2 */
     {"Corepac L2_1", 0x11800000, 0, 1024*1024}, /* Corepac 1 L2 */
     {"Corepac L2_2", 0x12800000, 0, 1024*1024}, /* Corepac 2 L2 */
-    {"Corepac L2_3", 0x13800000, 0, 1024*1024} /* Corepac 3 L2 */
+    {"Corepac L2_3", 0x13800000, 0, 1024*1024}  /* Corepac 3 L2 */
 };
 
 const int zero_test_words = 65536;
@@ -72,17 +72,16 @@ const int memory_table_elements = sizeof(memory_table)/sizeof(struct memory_blk_
 
 static struct option long_options[] = {
     {"interations", required_argument, 0, 'i'},
+    {"pipe", no_argument, 0, 'P'},
     {"quiet", no_argument, 0,'q'},
     {"help", no_argument, 0, 'h'},
     {"version", no_argument, 0, 'v'}
 };
 
-static char * short_options = "i:qhv";
+static char * short_options = "i:qhvP";
 
 static int test_iterations = 1;
-
-
-#define USE_SIGNALS 1
+static bool pipe_enable = false;
 
 int main(int argc, char *argv[])
 {
@@ -110,18 +109,21 @@ int main(int argc, char *argv[])
         case 'h':
             fprintf(g_stdout, "Usage: ctprof_ex [ihqv]\n");
             fprintf(g_stdout, " --iterations/-i <n>     Run test n times\n");
+            fprintf(g_stdout, " --pipe/-P               Use pipe to coordiante with ctprof_srv\n");
             fprintf(g_stdout, " --help/-h               Print this\n");
             fprintf(g_stdout, " --quiet/-q              Send stdout to /dev/null\n");
             fprintf(g_stdout, " --version/-v            Print version\n");
             fprintf(g_stdout, "\n");
             exit(0);
+        case 'P':
+            pipe_enable = true;
+            break;
         case 'v':
             fprintf(g_stdout, "ctprof_ex version %d.%d\n", 
                                              g_major_version, g_minor_version);
             fprintf(g_stdout, "Copyright (C) %d Texas Instruments, Inc.\n", 
                                                              g_copyright_year); 
             exit(0);
-            break;
         default:
             fprintf(g_stderr,"Invalid option - try -h\n");
             exit(0); 
@@ -132,17 +134,16 @@ int main(int argc, char *argv[])
     /************************************************************/
     /* Wait until ctprof is recording to start                  */
     /************************************************************/
-    if (ctprof_pipe_open() == -1) {
-        fprintf(g_stderr, "Can't open pipe to ctprof\n");
-        exit(-1);
+    if (pipe_enable) {
+        if (ctprof_pipe_open() == -1) {
+            fprintf(g_stderr, "Can't open pipe to ctprof\n");
+            exit(-1);
+        }
+        ctprof_ready_wait();
+        ctprof_start_recording();
+        ctprof_recording_wait();
     }
-
-#if USE_SIGNALS
-    ctprof_ready_wait();
-    ctprof_start_recording();
-#endif
-    ctprof_recording_wait();
-
     /************************************************************/
     /* Map each memory table element                            */
     /************************************************************/
@@ -170,12 +171,13 @@ int main(int argc, char *argv[])
         /* This test writes zero to the first 64K words of each memory_table element */
         for (int i = 0; i <  memory_table_elements; i++) {
 
-#if USE_SIGNALS
-            if (i == 2) {
-                ctprof_end_recording();
-                ctprof_stopped_wait();
+            if (pipe_enable) {
+                if (i == 2) {
+                    ctprof_end_recording();
+                    ctprof_stopped_wait();
+                }
             }
-#endif
+
             fprintf(g_stdout, "\r%s:Testing %d words of %s\n", g_whoami, zero_test_words, memory_table[i].name);
 
             uint32_t * addr = (uint32_t *)memory_table[i].v_addr;
@@ -199,8 +201,10 @@ int main(int argc, char *argv[])
 
     } /* End of while*/
 
+    if (pipe_enable) {
+        ctprof_pipe_close();
+    }
     fprintf(g_stdout, "\r%s:Exiting\n", g_whoami);
-    ctprof_pipe_close();
     exit(0);
 }