cpu: Fix bug when reading in TrafficGen state transitions
authorSascha Bischoff <sascha.bischoff@arm.com>
Thu, 30 May 2013 16:54:07 +0000 (12:54 -0400)
committerSascha Bischoff <sascha.bischoff@arm.com>
Thu, 30 May 2013 16:54:07 +0000 (12:54 -0400)
This patch fixes a bug with the traffic generator which occured when
reading in the state transitions from the configuration
file. Previously, the size of the vector which stored the transitions
was used to get the size of the transitions matrix, rather than using
the number of states. Therefore, if there were more transitions than
states, i.e. some transitions has a probability of less than 1, then
the traffic generator would fatal when trying to check the
transitions.

This issue has been addressed by using the number of input states,
rather then the number of transitions.

src/cpu/testers/traffic_gen/traffic_gen.cc

index f5835f8f4072c454617b7fb031ff87db122263f2..cb2e6e7bb0d47d41a86e058ebb4e3d13a0e937dd 100644 (file)
@@ -315,9 +315,9 @@ TrafficGen::parseConfig()
     }
 
     // resize and populate state transition matrix
-    transitionMatrix.resize(transitions.size());
-    for (size_t i = 0; i < transitions.size(); i++) {
-        transitionMatrix[i].resize(transitions.size());
+    transitionMatrix.resize(states.size());
+    for (size_t i = 0; i < states.size(); i++) {
+        transitionMatrix[i].resize(states.size());
     }
 
     for (vector<Transition>::iterator t = transitions.begin();
@@ -327,9 +327,9 @@ TrafficGen::parseConfig()
 
     // ensure the egress edges do not have a probability larger than
     // one
-    for (size_t i = 0; i < transitions.size(); i++) {
+    for (size_t i = 0; i < states.size(); i++) {
         double sum = 0;
-        for (size_t j = 0; j < transitions.size(); j++) {
+        for (size_t j = 0; j < states.size(); j++) {
             sum += transitionMatrix[i][j];
         }