- struct timespec ts_diff1, ts_diff2;
- char str_sent[32], str_kern[32], str_user[32], str_diff1[32], str_diff2[32];
- timespec_subtract(&ts_diff1, &mi->ts_rx_final_kern, &mi->ts_sent);
- timespec_subtract(&ts_diff2, &mi->ts_rx_final, &mi->ts_sent);
- tstamp_str(str_sent, &mi->ts_sent);
- tstamp_str(str_kern, &mi->ts_rx_final_kern);
- tstamp_str(str_user, &mi->ts_rx_final);
- tstamp_str(str_diff1, &ts_diff1);
- tstamp_str(str_diff2, &ts_diff2);
- printf("%s -> %s (%s) = %s (%s)\n", str_sent, str_user, str_kern, str_diff1, str_diff2);
+ struct timespec diff;
+ void *local = talloc_new (NULL);
+ static long num = 0;
+
+#define S(ts) tstamp_str(local, &ts)
+#define DIFF(a, b) (timespec_subtract(&diff, &b, &a), S(diff))
+
+ if (num_interfaces == 2)
+ fprintf(f, "%ld: %s -> %s (%s) = %s (%s)\n",
+ num, S(mi->ts_sent), S(mi->ts_rx_final_kern), S(mi->ts_rx_final),
+ DIFF(mi->ts_sent, mi->ts_rx_final_kern),
+ DIFF(mi->ts_sent, mi->ts_rx_final));
+ else
+ fprintf(f, "%ld: %s -> %s (%s) -> %s (%s) = %s (%s), %s (%s)\n",
+ num, S(mi->ts_sent),
+ S(mi->ts_rx_onwire_kern), S(mi->ts_rx_onwire),
+ S(mi->ts_rx_final_kern), S(mi->ts_rx_final),
+ DIFF(mi->ts_sent, mi->ts_rx_onwire_kern),
+ DIFF(mi->ts_sent, mi->ts_rx_onwire),
+ DIFF(mi->ts_rx_onwire_kern, mi->ts_rx_final_kern),
+ DIFF(mi->ts_rx_onwire, mi->ts_rx_final));
+#undef S
+#undef DIFF
+ num++;
+ talloc_free (local);
+}
+
+int msg_info_store(FILE *f, struct msg_info *mi)
+{
+ struct timespec diff;
+ void *local = talloc_new (NULL);
+ static long num = 0;
+
+#define S(ts) tstamp_str(local, &ts)
+#define DIFF(a, b) (timespec_subtract(&diff, &b, &a), S(diff))
+
+ if (num_interfaces == 2)
+ fprintf(f, "%ld %d %d %s\n",
+ num, mi->id, mi->length,
+ DIFF(mi->ts_sent, mi->ts_rx_final_kern));
+ else
+ fprintf(f, "%ld %d %d %s\n",
+ num, mi->id, mi->length,
+ DIFF(mi->ts_rx_onwire_kern, mi->ts_rx_final_kern));
+#undef S
+#undef DIFF
+ talloc_free (local);