]> rtime.felk.cvut.cz Git - frescor/fwp.git/commitdiff
Fixed processing when resetting statistics.
authorMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 18 Jan 2008 13:05:05 +0000 (14:05 +0100)
committerMichal Sojka <sojkam1@fel.cvut.cz>
Fri, 18 Jan 2008 13:05:05 +0000 (14:05 +0100)
wme_test/wclient.c

index 111db7736a73d1dec19df78c18eec97ed3d1a56a..09ef2775e34e77245cc70612ed09f7e2bdd00051 100644 (file)
@@ -32,6 +32,7 @@ int opt_granularity_usec = MIN_GRANULARITY;
 bool opt_wait_for_queue_is_full; /* Don't gather any statistics until any queue is full */
 
 bool some_queue_is_full = false;
+struct timespec reset_timestamp;
 
 /* Locked when some queue is full to prevent multiple resets of
    statstics. */
@@ -273,12 +274,12 @@ void reset_statistics()
 {
        int i;
        /* Mutexes??? */
-       printf("Reseting\n");
        for (i = 0; i < nr_streams; i++) {
                streams[i].sent = 0;
                streams[i].received = 0;
        }
        memset(delay_stats, 0, sizeof(delay_stats));
+       clock_gettime(CLOCK_MONOTONIC, &reset_timestamp);
 }
 
 void* receiver(void* queue)
@@ -289,7 +290,7 @@ void* receiver(void* queue)
        unsigned int ac, rem_addr_length; 
        unsigned long int trans_time_usec;
        unsigned long int min_trans_time;
-       struct timespec   send_timestamp,recv_timestamp, trans_time;
+       struct timespec   send_timestamp,recv_timestamp, trans_time, time_from_reset;
        fd_set fdset;
        
        min_trans_time = ~0;
@@ -316,7 +317,13 @@ void* receiver(void* queue)
                }       
                clock_gettime(CLOCK_MONOTONIC,&recv_timestamp);
                send_timestamp = msg.send_timestamp;
-               
+
+               /* Check whether this message was sent after reset_statistics() */
+               timespec_sub(&time_from_reset, &send_timestamp, &reset_timestamp);
+               if (time_from_reset.tv_sec < 0) {
+                       printf("ted\n");
+                       continue; /* If so, don't count it */
+               }
                timespec_sub(&trans_time,&recv_timestamp ,&send_timestamp);
                trans_time_usec = (trans_time.tv_sec * SEC_TO_USEC + \
                                         trans_time.tv_nsec / USEC_TO_NSEC) /2;