TmThreadsSetFlag(tv_local, THV_INIT_DONE | THV_RUNNING);
while (1) {
- if (TmThreadsCheckFlag(tv_local, THV_PAUSE)) {
- TmThreadsSetFlag(tv_local, THV_PAUSED);
- TmThreadTestThreadUnPaused(tv_local);
- TmThreadsUnsetFlag(tv_local, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(tv_local);
struct timeval cur_timev;
gettimeofday(&cur_timev, NULL);
TmThreadsSetFlag(tv_local, THV_INIT_DONE | THV_RUNNING);
while (1) {
- if (TmThreadsCheckFlag(tv_local, THV_PAUSE)) {
- TmThreadsSetFlag(tv_local, THV_PAUSED);
- TmThreadTestThreadUnPaused(tv_local);
- TmThreadsUnsetFlag(tv_local, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(tv_local);
struct timeval cur_timev;
gettimeofday(&cur_timev, NULL);
SCLogDebug("loader thread started");
while (1)
{
- if (TmThreadsCheckFlag(th_v, THV_PAUSE)) {
- TmThreadsSetFlag(th_v, THV_PAUSED);
- TmThreadTestThreadUnPaused(th_v);
- TmThreadsUnsetFlag(th_v, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(th_v);
/* see if we have tasks */
TmThreadsSetFlag(th_v, THV_RUNNING);
while (1) {
- if (TmThreadsCheckFlag(th_v, THV_PAUSE)) {
- TmThreadsSetFlag(th_v, THV_PAUSED);
- TmThreadTestThreadUnPaused(th_v);
- TmThreadsUnsetFlag(th_v, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(th_v);
SCLogDebug("Dumping the table");
gettimeofday(&tv, NULL);
TIMEVAL_TO_TIMESPEC(&tv, &curtime);
while (1)
{
- if (TmThreadsCheckFlag(th_v, THV_PAUSE)) {
- TmThreadsSetFlag(th_v, THV_PAUSED);
- TmThreadTestThreadUnPaused(th_v);
- TmThreadsUnsetFlag(th_v, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(th_v);
bool emerg = ((SC_ATOMIC_GET(flow_flags) & FLOW_EMERGENCY) != 0);
while (1)
{
- if (TmThreadsCheckFlag(th_v, THV_PAUSE)) {
- TmThreadsSetFlag(th_v, THV_PAUSED);
- TmThreadTestThreadUnPaused(th_v);
- TmThreadsUnsetFlag(th_v, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(th_v);
SC_ATOMIC_ADD(flowrec_busy,1);
FlowQueuePrivate list = FlowQueueExtractPrivate(&flow_recycle_q);
TmThreadsSetFlag(tv, THV_INIT_DONE);
while(run) {
- if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
- TmThreadsSetFlag(tv, THV_PAUSED);
- TmThreadTestThreadUnPaused(tv);
- TmThreadsUnsetFlag(tv, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(tv);
r = s->PktAcqLoop(tv, SC_ATOMIC_GET(s->slot_data), s);
return NULL;
}
+void TmThreadsWaitForUnpause(ThreadVars *tv)
+{
+ if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
+ TmThreadsSetFlag(tv, THV_PAUSED);
+ TmThreadTestThreadUnPaused(tv);
+ TmThreadsUnsetFlag(tv, THV_PAUSED);
+ }
+}
+
static void *TmThreadsSlotVar(void *td)
{
ThreadVars *tv = (ThreadVars *)td;
s = (TmSlot *)tv->tm_slots;
while (run) {
- if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
- TmThreadsSetFlag(tv, THV_PAUSED);
- TmThreadTestThreadUnPaused(tv);
- TmThreadsUnsetFlag(tv, THV_PAUSED);
- }
+ TmThreadsWaitForUnpause(tv);
/* input a packet */
p = tv->tmqh_in(tv);
uint16_t TmThreadsGetWorkerThreadMax(void);
bool TmThreadsTimeSubsysIsReady(void);
+/** \brief Wait for a thread to become unpaused. */
+void TmThreadsWaitForUnpause(ThreadVars *tv);
+
#endif /* SURICATA_TM_THREADS_H */