rt-tests: hackbench: fix for uninitialized start time

Hello,

While playing around with hackbench I discovered that I would sometimes
get an enormous time reported, even if the run time would be less than a
second or so. The problem was that the struct timeval start was not
initialized until after all children have been created. But if the
program receives a signal before this is done, the start time is left
uninitialized.

I propose that in such situations an error message be displayed, like
the following patch does.

Please let me know if this is acceptable.

Regards,
/Ciprian

Signed-off-by: Clark Williams <williams@redhat.com>
This commit is contained in:
Ciprian Barbu 2013-12-12 16:47:19 +02:00 committed by Clark Williams
parent b0413ae5ed
commit 3917fdbe56
1 changed files with 10 additions and 4 deletions

View File

@ -443,6 +443,7 @@ int main(int argc, char *argv[])
struct timeval start, stop, diff;
int readyfds[2], wakefds[2];
char dummy;
int timer_started = 0;
struct sched_param sp;
process_options (argc, argv);
@ -489,9 +490,10 @@ int main(int argc, char *argv[])
reap_workers(child_tab, total_children, 1);
barf("Reading for readyfds");
}
gettimeofday(&start, NULL);
timer_started = 1;
/* Kick them off */
if (write(wakefds[1], &dummy, 1) != 1) {
reap_workers(child_tab, total_children, 1);
@ -510,8 +512,12 @@ int main(int argc, char *argv[])
gettimeofday(&stop, NULL);
/* Print time... */
timersub(&stop, &start, &diff);
printf("Time: %lu.%03lu\n", diff.tv_sec, diff.tv_usec/1000);
if (timer_started) {
timersub(&stop, &start, &diff);
printf("Time: %lu.%03lu\n", diff.tv_sec, diff.tv_usec/1000);
}
else
fprintf(stderr, "No measurements available\n");
free(child_tab);
exit(0);
}