int num_interfaces = 0;
int count = 0; /* Number of sent messages */
+unsigned msg_in_progress = 0;
int completion_pipe[2];
struct msg_info {
if (idx >= MAX_INFOS)
error(1, 0, "%s idx too high", __FUNCTION__);
} else {
-
+
error(1, 0, "%s error", __FUNCTION__);
}
return &msg_infos[idx];
char *debugfs;
char path[256];
FILE *f;
-
+
debugfs = "/sys/kernel/debug";
if (debugfs) {
strcpy(path, debugfs);
mi->length = frame.can_dlc;
get_tstamp(&mi->ts_sent);
mi->sent = frame;
-
+
trace_on();
ret = write(socket, &frame, sizeof(frame));
trace_off(ret);
struct can_frame frame;
struct msg_info *mi;
int ret;
-
+
receive(s, &frame, &ts_kern, &ts_user);
mi = frame2info(&frame);
mi->ts_rx_final_kern = ts_kern;
struct timespec timeout;
struct sockaddr_can addr;
sigset_t set;
- unsigned msg_in_progress = 0;
MEMSET_ZERO(pfd);
return 0;
}
+void print_progress()
+{
+ printf("\rSent %5d, in progress %5d", count, msg_in_progress);
+ fflush(stdout);
+}
int main(int argc, const char *argv[])
{
error(1, errno, "pipe fcntl");
init_ftrace();
-
+
pthread_create(&thread, 0, measure_thread, NULL);
struct timespec next, now, diff;
clock_gettime(CLOCK_MONOTONIC, &now);
if (timespec_subtract(&diff, &next, &now)) {
- printf("\rMessage %d", count);
- fflush(stdout);
- next.tv_nsec += 100000000;
+ print_progress();
+ next.tv_nsec += 100000000;
while (next.tv_nsec >= 1000000000) {
next.tv_nsec -= 1000000000;
next.tv_sec++;
}
}
}
- printf("\rMessage %d\n", count);
+ print_progress();
+ printf("\n");
pthread_join(thread, NULL);