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:
parent
b0413ae5ed
commit
3917fdbe56
|
@ -443,6 +443,7 @@ int main(int argc, char *argv[])
|
||||||
struct timeval start, stop, diff;
|
struct timeval start, stop, diff;
|
||||||
int readyfds[2], wakefds[2];
|
int readyfds[2], wakefds[2];
|
||||||
char dummy;
|
char dummy;
|
||||||
|
int timer_started = 0;
|
||||||
struct sched_param sp;
|
struct sched_param sp;
|
||||||
|
|
||||||
process_options (argc, argv);
|
process_options (argc, argv);
|
||||||
|
@ -489,9 +490,10 @@ int main(int argc, char *argv[])
|
||||||
reap_workers(child_tab, total_children, 1);
|
reap_workers(child_tab, total_children, 1);
|
||||||
barf("Reading for readyfds");
|
barf("Reading for readyfds");
|
||||||
}
|
}
|
||||||
|
|
||||||
gettimeofday(&start, NULL);
|
gettimeofday(&start, NULL);
|
||||||
|
timer_started = 1;
|
||||||
|
|
||||||
/* Kick them off */
|
/* Kick them off */
|
||||||
if (write(wakefds[1], &dummy, 1) != 1) {
|
if (write(wakefds[1], &dummy, 1) != 1) {
|
||||||
reap_workers(child_tab, total_children, 1);
|
reap_workers(child_tab, total_children, 1);
|
||||||
|
@ -510,8 +512,12 @@ int main(int argc, char *argv[])
|
||||||
gettimeofday(&stop, NULL);
|
gettimeofday(&stop, NULL);
|
||||||
|
|
||||||
/* Print time... */
|
/* Print time... */
|
||||||
timersub(&stop, &start, &diff);
|
if (timer_started) {
|
||||||
printf("Time: %lu.%03lu\n", diff.tv_sec, diff.tv_usec/1000);
|
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);
|
free(child_tab);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue