}
}
+static void exit_trace(int status)
+{
+ stop_trace();
+ exit(status);
+}
+
static void extract_data(struct thread_information *tip, char *ofn, int nb)
{
int ret, bytes_left;
fprintf(stderr, "Thread %d extract_data %s failed\n",
tip->cpu, tip->fn);
free(buf);
- exit(1);
+ exit_trace(1);
} else {
p += ret;
bytes_left -= ret;
perror(ofn);
fprintf(stderr,"Thread %d extract_data %s failed\n", tip->cpu, ofn);
free(buf);
- exit(1);
+ exit_trace(1);
}
free(buf);
if (sched_setaffinity(pid, sizeof(cpu_mask), &cpu_mask) == -1) {
perror("sched_setaffinity");
- exit(1);
+ exit_trace(1);
}
snprintf(tip->fn, sizeof(tip->fn),
perror(tip->fn);
fprintf(stderr,"Thread %d failed open of %s\n", tip->cpu,
tip->fn);
- exit(1);
+ exit_trace(1);
}
while (!is_done()) {
perror(tip->fn);
fprintf(stderr,"Thread %d failed read of %s\n",
tip->cpu, tip->fn);
- exit(1);
+ exit_trace(1);
} else if (ret > 0) {
fprintf(stderr,"Thread %d misread %s %d,%d\n",
tip->cpu, tip->fn, ret, (int)sizeof(t));
- exit(1);
+ exit_trace(1);
} else {
usleep(10000);
continue;
}
if (verify_trace(&t))
- exit(1);
+ exit_trace(1);
pdu_len = t.pdu_len;
if (ret < 0) {
fprintf(stderr,"Thread %d failed write\n", tip->cpu);
tip_fd_unlock(tip);
- exit(1);
+ exit_trace(1);
}
if (pdu_len)