.length = 2,
};
+struct {
+ unsigned enobufs;
+ unsigned overrun;
+} stats;
+
int num_interfaces = 0;
int count = 0; /* Number of sent messages */
int completion_pipe[2];
last.tv_nsec -= 1000000000;
last.tv_sec++;
}
- timespec_subtract(timeout, &last, &now);
+ if (timespec_subtract(timeout, &last, &now) /* is negative */) {
+ stats.overrun++;
+ memset(timeout, 0, sizeof(*timeout));
+ }
} else if (opt.timeout_ms != 0) {
timeout->tv_sec = opt.timeout_ms/1000;
timeout->tv_nsec = (opt.timeout_ms%1000)*1000000;
ret = send_frame(pfd[0].fd); \
if (ret != sizeof(struct can_frame)) { \
if (ret == -1 && errno == ENOBUFS && opt.period_us == 0 && !opt.oneattime) { \
+ stats.enobufs++; \
/* Ignore this error - pfifo_fast qeuue is full */ \
} else \
error(1, errno, "send_frame (line %d)", __LINE__); \
if (opt.file)
fclose(opt.file);
+ if (stats.overrun)
+ printf("overrun=%d\n", stats.overrun);
+ if (stats.enobufs)
+ printf("enobufs=%d\n", stats.enobufs);
+
return 0;
}