time: only consider packet threads

In offline mode, a timestamp is kept per thread, and the lowest
timestamp of the active threads is used. This was also considering the
non-packet threads, which could lead to the used timestamp being further
behind that needed. This would happen at the start of the program, as
the non-packet threads were set up the same way as the packet threads.

This patch both no longer sets up the timestamp for non-packet threads
as well as not considering non-packet threads during timestamp
retrieval.

Fixes: 6f560144c1 ("time: improve offline time handling")

Bug: #7034.
pull/11120/head
Victor Julien 10 months ago committed by Victor Julien
parent 0aaec69303
commit 5455799795

@ -2211,6 +2211,8 @@ bool TmThreadsTimeSubsysIsReady(void)
Thread *t = &thread_store.threads[s];
if (!t->in_use)
break;
if (t->type != TVT_PPT)
continue;
if (t->sys_sec_stamp == 0) {
ready = false;
break;
@ -2229,6 +2231,8 @@ void TmThreadsInitThreadsTimestamp(const SCTime_t ts)
Thread *t = &thread_store.threads[s];
if (!t->in_use)
break;
if (t->type != TVT_PPT)
continue;
t->pktts = ts;
t->sys_sec_stamp = (uint32_t)systs.tv_sec;
}
@ -2249,6 +2253,9 @@ void TmThreadsGetMinimalTimestamp(struct timeval *ts)
Thread *t = &thread_store.threads[s];
if (t->in_use == 0)
break;
/* only packet threads set timestamps based on packets */
if (t->type != TVT_PPT)
continue;
struct timeval pkttv = { .tv_sec = SCTIME_SECS(t->pktts),
.tv_usec = SCTIME_USECS(t->pktts) };
if (!(timercmp(&pkttv, &nullts, ==))) {

Loading…
Cancel
Save