char *opt_comment = NULL;
bool some_queue_is_full = false;
-struct timespec reset_timestamp;
+uint64_t reset_timestamp; /* [nsec] */
bool some_contract_not_accepted = false;
void reset_statistics()
{
int i;
+ struct timespec ts;
for (i = 0; i < nr_streams; i++) {
pthread_mutex_lock(&streams[i].mutex);
streams[i].sent = 0;
pthread_mutex_unlock(&streams[i].mutex);
}
pthread_mutex_lock(&delay_stats_mutex);
- clock_gettime(CLOCK_REALTIME, &reset_timestamp);
+ clock_gettime(CLOCK_REALTIME, &ts);
+ reset_timestamp = ts.tv_sec*1000000000LL + ts.tv_nsec;
memset(delay_stats, 0, sizeof(delay_stats));
pthread_mutex_unlock(&delay_stats_mutex);
}
struct msg_t msg;
long long int trans_time_usec, client_to_server_usec, server_to_client_usec;
long long int min_trans_time;
- struct timespec send_timestamp, server_timestamp, recv_timestamp;
- int mlen, ret;
+ struct timespec ts;
+ uint64_t send_timestamp, server_timestamp, recv_timestamp;
+ int mlen;
unsigned ac;
min_trans_time = ~0;
error(0, errno, "receive_packet error");
goto out;
}
- clock_gettime(CLOCK_REALTIME,&recv_timestamp);
+ clock_gettime(CLOCK_REALTIME,&ts);
+ recv_timestamp = ts.tv_sec*1000000000LL + ts.tv_nsec;
send_timestamp = msg.send_timestamp;
server_timestamp = msg.sendback_timestamp;
/* Check whether this message was sent after reset_statistics() */
- if ((ret = timespec_sub_usec(&send_timestamp, &reset_timestamp)) < 0) {
+ if (send_timestamp < reset_timestamp) {
continue; /* If so, don't count it */
}
- trans_time_usec = timespec_sub_usec(&recv_timestamp ,&send_timestamp) / 2;
- client_to_server_usec = timespec_sub_usec(&server_timestamp, &send_timestamp);
- server_to_client_usec = timespec_sub_usec(&recv_timestamp, &server_timestamp);
+ trans_time_usec = (recv_timestamp - send_timestamp) / 2 / 1000;
+ client_to_server_usec = (server_timestamp - send_timestamp) / 1000;
+ server_to_client_usec = (recv_timestamp - server_timestamp) / 1000;
pthread_mutex_lock(&delay_stats_mutex);
if (trans_time_usec < MAX_DELAY_US && trans_time_usec >= 0) {
union msg_buff buff;
unsigned long int seqn;
struct stream* stream = (struct stream*) arg;
+ struct timespec ts;
int ret;
#ifndef WITH_FWP
/* buff.msg.tos = ac_to_tos[stream->ac]; */
buff.msg.stream = stream-streams;
- clock_gettime(CLOCK_REALTIME,&buff.msg.send_timestamp);
+ clock_gettime(CLOCK_REALTIME,&ts);
+ buff.msg.send_timestamp = ts.tv_sec*1000000000LL + ts.tv_nsec;
ret = send_packet(stream, &buff);
if (ret < 0) {
fflush(stdout);
#endif
- wait_for_next_send(stream, &buff.msg.send_timestamp);
+ wait_for_next_send(stream, &ts);
}
out:
sem_post(&sem_thread_finished);
fprintf(stderr, "\nWaiting for threads to finish\n");
wait_for_all_threads_to_finish();
- struct timespec end_timestamp, measure_length;
- clock_gettime(CLOCK_REALTIME,&end_timestamp);
- timespec_sub(&measure_length, &end_timestamp, &reset_timestamp);
+ struct timespec ts;
+ uint64_t end_timestamp, measure_length;
+ clock_gettime(CLOCK_REALTIME,&ts);
+ end_timestamp = ts.tv_sec*1000000000LL+ts.tv_nsec;
+ measure_length = end_timestamp - reset_timestamp;
- save_results(argc, argv, timespec2usec(&measure_length));
+ save_results(argc, argv, measure_length/1000);
#endif
return 0;