suricata
tm-threads.c File Reference
#include "suricata-common.h"
#include "suricata.h"
#include "stream.h"
#include "runmodes.h"
#include "threadvars.h"
#include "tm-queues.h"
#include "tm-queuehandlers.h"
#include "tm-threads.h"
#include "tmqh-packetpool.h"
#include "threads.h"
#include "util-debug.h"
#include "util-privs.h"
#include "util-cpu.h"
#include "util-optimize.h"
#include "util-profiling.h"
#include "util-signal.h"
#include "queue.h"
Include dependency graph for tm-threads.c:

Go to the source code of this file.

Data Structures

struct  Thread_
 
struct  Threads_
 

Macros

#define MIN_WAIT_TIME   100
 
#define MAX_WAIT_TIME   999999
 
#define STEP   32
 

Typedefs

typedef struct Thread_ Thread
 
typedef struct Threads_ Threads
 

Functions

int TmThreadsCheckFlag (ThreadVars *tv, uint32_t flag)
 Check if a thread flag is set. More...
 
void TmThreadsSetFlag (ThreadVars *tv, uint32_t flag)
 Set a thread flag. More...
 
void TmThreadsUnsetFlag (ThreadVars *tv, uint32_t flag)
 Unset a thread flag. More...
 
TmEcode TmThreadsSlotVarRun (ThreadVars *tv, Packet *p, TmSlot *slot)
 Separate run function so we can call it recursively. More...
 
ThreadVarsTmThreadsGetTVContainingSlot (TmSlot *tm_slot)
 
void TmSlotSetFuncAppend (ThreadVars *tv, TmModule *tm, const void *data)
 Appends a new entry to the slots. More...
 
TmSlotTmSlotGetSlotForTM (int tm_id)
 Returns the slot holding a TM with the particular tm_id. More...
 
TmEcode TmThreadSetThreadPriority (ThreadVars *tv, int prio)
 Set the thread options (thread priority). More...
 
void TmThreadSetPrio (ThreadVars *tv)
 Adjusting nice value for threads. More...
 
TmEcode TmThreadSetCPUAffinity (ThreadVars *tv, uint16_t cpu)
 Set the thread options (cpu affinity). More...
 
TmEcode TmThreadSetCPU (ThreadVars *tv, uint8_t type)
 
int TmThreadGetNbThreads (uint8_t type)
 
TmEcode TmThreadSetupOptions (ThreadVars *tv)
 Set the thread options (cpu affinitythread). Priority should be already set by pthread_create. More...
 
ThreadVarsTmThreadCreate (const char *name, const char *inq_name, const char *inqh_name, const char *outq_name, const char *outqh_name, const char *slots, void *(*fn_p)(void *), int mucond)
 Creates and returns the TV instance for a new thread. More...
 
ThreadVarsTmThreadCreatePacketHandler (const char *name, const char *inq_name, const char *inqh_name, const char *outq_name, const char *outqh_name, const char *slots)
 Creates and returns a TV instance for a Packet Processing Thread. This function doesn't support custom slots, and hence shouldn't be supplied "custom" as its slot type. All PPT threads are created with a mucond(see TmThreadCreate declaration) of 0. Hence the tv conditional variables are not used to kill the thread. More...
 
ThreadVarsTmThreadCreateMgmtThread (const char *name, void *(fn_p)(void *), int mucond)
 Creates and returns the TV instance for a Management thread(MGMT). This function supports only custom slot functions and hence a function pointer should be sent as an argument. More...
 
ThreadVarsTmThreadCreateMgmtThreadByName (const char *name, const char *module, int mucond)
 Creates and returns the TV instance for a Management thread(MGMT). This function supports only custom slot functions and hence a function pointer should be sent as an argument. More...
 
ThreadVarsTmThreadCreateCmdThreadByName (const char *name, const char *module, int mucond)
 Creates and returns the TV instance for a Command thread (CMD). This function supports only custom slot functions and hence a function pointer should be sent as an argument. More...
 
void TmThreadAppend (ThreadVars *tv, int type)
 Appends this TV to tv_root based on its type. More...
 
void TmThreadDisableReceiveThreads (void)
 Disable all threads having the specified TMs. More...
 
void TmThreadDisablePacketThreads (void)
 Disable all packet threads. More...
 
TmSlotTmThreadGetFirstTmSlotForPartialPattern (const char *tm_name)
 
void TmThreadKillThreadsFamily (int family)
 
void TmThreadKillThreads (void)
 
void TmThreadSetGroupName (ThreadVars *tv, const char *name)
 
void TmThreadClearThreadsFamily (int family)
 
TmEcode TmThreadSpawn (ThreadVars *tv)
 Spawns a thread associated with the ThreadVars instance tv. More...
 
void TmThreadInitMC (ThreadVars *tv)
 Initializes the mutex and condition variables for this TV. More...
 
void TmThreadTestThreadUnPaused (ThreadVars *tv)
 Tests if the thread represented in the arg has been unpaused or not. More...
 
void TmThreadWaitForFlag (ThreadVars *tv, uint32_t flags)
 Waits till the specified flag(s) is(are) set. We don't bother if the kill flag has been set or not on the thread. More...
 
void TmThreadContinue (ThreadVars *tv)
 Unpauses a thread. More...
 
void TmThreadContinueThreads ()
 Unpauses all threads present in tv_root. More...
 
void TmThreadPause (ThreadVars *tv)
 Pauses a thread. More...
 
void TmThreadPauseThreads ()
 Pauses all threads present in tv_root. More...
 
void TmThreadCheckThreadState (void)
 Used to check the thread for certain conditions of failure. More...
 
TmEcode TmThreadWaitOnThreadInit (void)
 Used to check if all threads have finished their initialization. On finding an un-initialized thread, it waits till that thread completes its initialization, before proceeding to the next thread. More...
 
ThreadVarsTmThreadsGetCallingThread (void)
 Returns the TV for the calling thread. More...
 
uint32_t TmThreadCountThreadsByTmmFlags (uint8_t flags)
 returns a count of all the threads that match the flag More...
 
void TmThreadDumpThreads (void)
 
void TmThreadsListThreads (void)
 
int TmThreadsRegisterThread (ThreadVars *tv, const int type)
 
void TmThreadsUnregisterThread (const int id)
 
void TmThreadsSetThreadTimestamp (const int id, const struct timeval *ts)
 
bool TmThreadsTimeSubsysIsReady (void)
 
void TmThreadsInitThreadsTimestamp (const struct timeval *ts)
 
void TmThreadsGetMinimalTimestamp (struct timeval *ts)
 
int TmThreadsInjectPacketsById (Packet **packets, const int id)
 

Variables

ThreadVarstv_root [TVT_MAX] = { NULL }
 
SCMutex tv_root_lock = SCMUTEX_INITIALIZER
 

Detailed Description

Author
Victor Julien victo.nosp@m.r@in.nosp@m.linia.nosp@m.c.ne.nosp@m.t
Anoop Saldanha anoop.nosp@m.sald.nosp@m.anha@.nosp@m.gmai.nosp@m.l.com
Eric Leblond eric@.nosp@m.regi.nosp@m.t.org

Thread management functions.

Definition in file tm-threads.c.

Macro Definition Documentation

◆ MAX_WAIT_TIME

#define MAX_WAIT_TIME   999999

Definition at line 1509 of file tm-threads.c.

◆ MIN_WAIT_TIME

#define MIN_WAIT_TIME   100

Definition at line 1508 of file tm-threads.c.

◆ STEP

#define STEP   32

Definition at line 2018 of file tm-threads.c.

Typedef Documentation

◆ Thread

typedef struct Thread_ Thread

◆ Threads

typedef struct Threads_ Threads

Function Documentation

◆ TmSlotGetSlotForTM()

TmSlot* TmSlotGetSlotForTM ( int  tm_id)

Returns the slot holding a TM with the particular tm_id.

Parameters
tm_idTM id of the TM whose slot has to be returned.
Return values
slotsPointer to the slot.

Definition at line 672 of file tm-threads.c.

References ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmSlot_::slot_next, TmSlot_::tm_id, ThreadVars_::tm_slots, tv, tv_root, tv_root_lock, and TVT_MAX.

◆ TmSlotSetFuncAppend()

void TmSlotSetFuncAppend ( ThreadVars tv,
TmModule tm,
const void *  data 
)

◆ TmThreadAppend()

void TmThreadAppend ( ThreadVars tv,
int  type 
)

Appends this TV to tv_root based on its type.

Parameters
typeholds the type this TV belongs to.

Definition at line 1158 of file tm-threads.c.

References ThreadVars_::next, SCMutexLock, SCMutexUnlock, tv, tv_root, tv_root_lock, and type.

Referenced by TmThreadSpawn().

Here is the caller graph for this function:

◆ TmThreadCheckThreadState()

void TmThreadCheckThreadState ( void  )

Used to check the thread for certain conditions of failure.

Definition at line 1800 of file tm-threads.c.

References FatalError, ThreadVars_::name, ThreadVars_::next, SC_ERR_FATAL, SCMutexLock, SCMutexUnlock, THV_FAILED, TmThreadsCheckFlag(), tv, tv_root, tv_root_lock, and TVT_MAX.

Here is the call graph for this function:

◆ TmThreadClearThreadsFamily()

void TmThreadClearThreadsFamily ( int  family)

Definition at line 1605 of file tm-threads.c.

References ThreadVars_::next, SCMutexLock, tv, tv_root, tv_root_lock, and TVT_MAX.

◆ TmThreadContinue()

void TmThreadContinue ( ThreadVars tv)

Unpauses a thread.

Parameters
tvPointer to a TV instance that has to be unpaused

Definition at line 1744 of file tm-threads.c.

References THV_PAUSE, TmThreadsUnsetFlag(), and tv.

Referenced by TmThreadContinueDetectLoaderThreads(), and TmThreadContinueThreads().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadContinueThreads()

void TmThreadContinueThreads ( )

Unpauses all threads present in tv_root.

Definition at line 1754 of file tm-threads.c.

References ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmThreadContinue(), tv, tv_root, tv_root_lock, and TVT_MAX.

Here is the call graph for this function:

◆ TmThreadCountThreadsByTmmFlags()

uint32_t TmThreadCountThreadsByTmmFlags ( uint8_t  flags)

returns a count of all the threads that match the flag

Definition at line 1921 of file tm-threads.c.

Referenced by PacketPoolPostRunmodes().

Here is the caller graph for this function:

◆ TmThreadCreate()

ThreadVars* TmThreadCreate ( const char *  name,
const char *  inq_name,
const char *  inqh_name,
const char *  outq_name,
const char *  outqh_name,
const char *  slots,
void *(*)(void *)  fn_p,
int  mucond 
)

Creates and returns the TV instance for a new thread.

Parameters
nameName of this TV instance
inq_nameIncoming queue name
inqh_nameIncoming queue handler name as set by TmqhSetup()
outq_nameOutgoing queue name
outqh_nameOutgoing queue handler as set by TmqhSetup()
slotsString representation for the slot function to be used
fn_pPointer to function when "slots" is of type "custom"
mucondFlag to indicate whether to initialize the condition and the mutex variables for this newly created TV.
Return values
thenewly created TV instance, or NULL on error

Definition at line 911 of file tm-threads.c.

References Tmqh_::InHandler, ThreadVars_::inq, ThreadVars_::inq_id, StatsPublicThreadContext_::m, ThreadVars_::name, ThreadVars_::outctx, Tmqh_::OutHandler, Tmqh_::OutHandlerCtxSetup, ThreadVars_::outq, ThreadVars_::outq_id, ThreadVars_::perf_public_ctx, Tmq_::reader_cnt, SC_ATOMIC_INIT, SCLogDebug, SCMalloc, SCMutexInit, strlcpy(), THV_PAUSE, THV_USE, TmqCreateQueue(), TmqGetQueueByName(), ThreadVars_::tmqh_in, ThreadVars_::tmqh_out, TmqhGetQueueHandlerByName(), TmqhNameToID(), TmThreadsSetFlag(), tv, unlikely, and Tmq_::writer_cnt.

Referenced by NapatechStartStats(), TmThreadCreateCmdThreadByName(), TmThreadCreateMgmtThread(), TmThreadCreateMgmtThreadByName(), and TmThreadCreatePacketHandler().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadCreateCmdThreadByName()

ThreadVars* TmThreadCreateCmdThreadByName ( const char *  name,
const char *  module,
int  mucond 
)

Creates and returns the TV instance for a Command thread (CMD). This function supports only custom slot functions and hence a function pointer should be sent as an argument.

Parameters
nameName of this TV instance
moduleName of TmModule with COMMAND flag set.
mucondFlag to indicate whether to initialize the condition and the mutex variables for this newly created TV.
Return values
thenewly created TV instance, or NULL on error

Definition at line 1132 of file tm-threads.c.

References ThreadVars_::id, m, MANAGEMENT_CPU_SET, TmModuleGetByName(), TmSlotSetFuncAppend(), TmThreadCreate(), TmThreadSetCPU(), TmThreadsRegisterThread(), tv, TVT_CMD, and ThreadVars_::type.

Here is the call graph for this function:

◆ TmThreadCreateMgmtThread()

ThreadVars* TmThreadCreateMgmtThread ( const char *  name,
void *  fn_p)(void *,
int  mucond 
)

Creates and returns the TV instance for a Management thread(MGMT). This function supports only custom slot functions and hence a function pointer should be sent as an argument.

Parameters
nameName of this TV instance
fn_pPointer to function when "slots" is of type "custom"
mucondFlag to indicate whether to initialize the condition and the mutex variables for this newly created TV.
Return values
thenewly created TV instance, or NULL on error

Definition at line 1071 of file tm-threads.c.

References ThreadVars_::id, MANAGEMENT_CPU_SET, TmThreadCreate(), TmThreadSetCPU(), TmThreadsRegisterThread(), tv, TVT_MGMT, and ThreadVars_::type.

Here is the call graph for this function:

◆ TmThreadCreateMgmtThreadByName()

ThreadVars* TmThreadCreateMgmtThreadByName ( const char *  name,
const char *  module,
int  mucond 
)

Creates and returns the TV instance for a Management thread(MGMT). This function supports only custom slot functions and hence a function pointer should be sent as an argument.

Parameters
nameName of this TV instance
moduleName of TmModule with MANAGEMENT flag set.
mucondFlag to indicate whether to initialize the condition and the mutex variables for this newly created TV.
Return values
thenewly created TV instance, or NULL on error

Definition at line 1099 of file tm-threads.c.

References ThreadVars_::id, m, MANAGEMENT_CPU_SET, TmModuleGetByName(), TmSlotSetFuncAppend(), TmThreadCreate(), TmThreadSetCPU(), TmThreadsRegisterThread(), tv, TVT_MGMT, and ThreadVars_::type.

Referenced by BypassedFlowManagerThreadSpawn().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadCreatePacketHandler()

ThreadVars* TmThreadCreatePacketHandler ( const char *  name,
const char *  inq_name,
const char *  inqh_name,
const char *  outq_name,
const char *  outqh_name,
const char *  slots 
)

Creates and returns a TV instance for a Packet Processing Thread. This function doesn't support custom slots, and hence shouldn't be supplied "custom" as its slot type. All PPT threads are created with a mucond(see TmThreadCreate declaration) of 0. Hence the tv conditional variables are not used to kill the thread.

Parameters
nameName of this TV instance
inq_nameIncoming queue name
inqh_nameIncoming queue handler name as set by TmqhSetup()
outq_nameOutgoing queue name
outqh_nameOutgoing queue handler as set by TmqhSetup()
slotsString representation for the slot function to be used
Return values
thenewly created TV instance, or NULL on error

Definition at line 1041 of file tm-threads.c.

References ThreadVars_::id, TmThreadCreate(), TmThreadsRegisterThread(), tv, TVT_PPT, and ThreadVars_::type.

Referenced by RunModeErfFileAutoFp(), RunModeErfFileSingle(), RunModeFilePcapAutoFp(), RunModeFilePcapSingle(), RunModeSetIPSAutoFp(), RunModeSetIPSWorker(), and RunModeSetLiveCaptureAutoFp().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadDisablePacketThreads()

void TmThreadDisablePacketThreads ( void  )

Disable all packet threads.

Definition at line 1429 of file tm-threads.c.

Referenced by PostRunDeinit().

Here is the caller graph for this function:

◆ TmThreadDisableReceiveThreads()

void TmThreadDisableReceiveThreads ( void  )

Disable all threads having the specified TMs.

Breaks out of the packet acquisition loop, and bumps into the 'flow loop', where it will process packets from the flow engine's shutdown handling.

Definition at line 1325 of file tm-threads.c.

References FatalError, TmModule_::flags, ThreadVars_::name, SC_ERR_FATAL, SCMutexLock, TmSlot_::slot_next, TM_FLAG_RECEIVE_TM, TmSlot_::tm_id, ThreadVars_::tm_slots, TmModuleGetById(), tv, tv_root, tv_root_lock, and TVT_PPT.

Referenced by PostRunDeinit().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadDumpThreads()

◆ TmThreadGetFirstTmSlotForPartialPattern()

TmSlot* TmThreadGetFirstTmSlotForPartialPattern ( const char *  tm_name)

◆ TmThreadGetNbThreads()

int TmThreadGetNbThreads ( uint8_t  type)

◆ TmThreadInitMC()

void TmThreadInitMC ( ThreadVars tv)

Initializes the mutex and condition variables for this TV.

It can be used by a thread to control a wait loop that can also be influenced by other threads.

Parameters
tvPointer to a TV instance

Definition at line 1663 of file tm-threads.c.

References ThreadVars_::ctrl_cond, ThreadVars_::ctrl_mutex, SC_ERR_FATAL, SCCtrlCondInit, SCCtrlMutexInit, SCLogError, SCMalloc, and tv.

◆ TmThreadKillThreads()

void TmThreadKillThreads ( void  )

Definition at line 1538 of file tm-threads.c.

References TmThreadKillThreadsFamily(), and TVT_MAX.

Here is the call graph for this function:

◆ TmThreadKillThreadsFamily()

void TmThreadKillThreadsFamily ( int  family)

Definition at line 1509 of file tm-threads.c.

References BUG_ON, MIN_WAIT_TIME, SCMutexLock, tv, tv_root, tv_root_lock, and TVT_MAX.

Referenced by TmThreadKillThreads().

Here is the caller graph for this function:

◆ TmThreadPause()

void TmThreadPause ( ThreadVars tv)

Pauses a thread.

Parameters
tvPointer to a TV instance that has to be paused

Definition at line 1773 of file tm-threads.c.

References THV_PAUSE, TmThreadsSetFlag(), and tv.

Referenced by TmThreadPauseThreads().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadPauseThreads()

void TmThreadPauseThreads ( )

Pauses all threads present in tv_root.

Definition at line 1782 of file tm-threads.c.

References ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmThreadPause(), TmThreadsListThreads(), tv, tv_root, tv_root_lock, and TVT_MAX.

Here is the call graph for this function:

◆ TmThreadsCheckFlag()

int TmThreadsCheckFlag ( ThreadVars tv,
uint32_t  flag 
)

Check if a thread flag is set.

Return values
1flag is set.
0flag is not set.

Definition at line 89 of file tm-threads.c.

References SC_ATOMIC_GET, and tv.

Referenced by TmThreadCheckThreadState(), TmThreadTestThreadUnPaused(), TmThreadWaitForFlag(), and TmThreadWaitOnThreadInit().

Here is the caller graph for this function:

◆ TmThreadSetCPU()

◆ TmThreadSetCPUAffinity()

TmEcode TmThreadSetCPUAffinity ( ThreadVars tv,
uint16_t  cpu 
)

Set the thread options (cpu affinity).

Parameters
tvpointer to the ThreadVars to setup the affinity.
cpucpu on which affinity is set.
Return values
TM_ECODE_OK

Definition at line 811 of file tm-threads.c.

References ThreadVars_::cpu_affinity, THREAD_SET_AFFINITY, ThreadVars_::thread_setup_flags, TM_ECODE_OK, and tv.

Referenced by RunModeErfFileAutoFp().

Here is the caller graph for this function:

◆ TmThreadSetGroupName()

void TmThreadSetGroupName ( ThreadVars tv,
const char *  name 
)

Definition at line 1587 of file tm-threads.c.

References SC_ERR_RUNMODE, SCLogError, SCStrdup, ThreadVars_::thread_group_name, tv, and unlikely.

Referenced by RunModeErfFileAutoFp(), RunModeFilePcapAutoFp(), RunModeSetIPSAutoFp(), and RunModeSetLiveCaptureAutoFp().

Here is the caller graph for this function:

◆ TmThreadSetPrio()

void TmThreadSetPrio ( ThreadVars tv)

Adjusting nice value for threads.

Definition at line 775 of file tm-threads.c.

References ThreadVars_::name, SC_ERR_THREAD_NICE_PRIO, SCEnter, SCLogDebug, SCLogError, SCReturn, ThreadVars_::thread_priority, and tv.

◆ TmThreadSetThreadPriority()

TmEcode TmThreadSetThreadPriority ( ThreadVars tv,
int  prio 
)

Set the thread options (thread priority).

Parameters
tvPointer to the ThreadVars to setup the thread priority.
Return values
TM_ECODE_OK.

Definition at line 764 of file tm-threads.c.

References ThreadVars_::thread_priority, THREAD_SET_PRIORITY, ThreadVars_::thread_setup_flags, TM_ECODE_OK, and tv.

Referenced by RunModeErfFileAutoFp().

Here is the caller graph for this function:

◆ TmThreadSetupOptions()

TmEcode TmThreadSetupOptions ( ThreadVars tv)

Set the thread options (cpu affinitythread). Priority should be already set by pthread_create.

Parameters
tvpointer to the ThreadVars of the calling thread.

Definition at line 852 of file tm-threads.c.

References ThreadVars_::cpu_affinity, ThreadVars_::name, SCGetThreadIdLong, SCLogPerf, THREAD_SET_AFFINITY, ThreadVars_::thread_setup_flags, and tv.

◆ TmThreadsGetCallingThread()

ThreadVars* TmThreadsGetCallingThread ( void  )

Returns the TV for the calling thread.

Return values
tvPointer to the ThreadVars instance for the calling thread; NULL on no match

Definition at line 1899 of file tm-threads.c.

References ThreadVars_::next, SCMutexLock, SCMutexUnlock, ThreadVars_::t, tv, tv_root, tv_root_lock, and TVT_MAX.

◆ TmThreadsGetMinimalTimestamp()

void TmThreadsGetMinimalTimestamp ( struct timeval *  ts)

Definition at line 2146 of file tm-threads.c.

References SCMutexLock.

◆ TmThreadsGetTVContainingSlot()

ThreadVars* TmThreadsGetTVContainingSlot ( TmSlot tm_slot)

◆ TmThreadsInitThreadsTimestamp()

void TmThreadsInitThreadsTimestamp ( const struct timeval *  ts)

Definition at line 2131 of file tm-threads.c.

References SCMutexLock.

Referenced by PcapFileDispatch().

Here is the caller graph for this function:

◆ TmThreadsInjectPacketsById()

int TmThreadsInjectPacketsById ( Packet **  packets,
const int  id 
)
Return values
r1 if packet was accepted, 0 otherwise
Note
if packet was not accepted, it's still the responsibility of the caller.

Definition at line 2186 of file tm-threads.c.

◆ TmThreadsListThreads()

void TmThreadsListThreads ( void  )

Definition at line 1997 of file tm-threads.c.

References SCMutexLock.

Referenced by TmThreadPauseThreads().

Here is the caller graph for this function:

◆ TmThreadSpawn()

TmEcode TmThreadSpawn ( ThreadVars tv)

Spawns a thread associated with the ThreadVars instance tv.

Return values
TM_ECODE_OKon success and TM_ECODE_FAILED on failure

Definition at line 1630 of file tm-threads.c.

References ThreadVars_::t, THV_INIT_DONE, THV_RUNNING_DONE, TM_ECODE_FAILED, TM_ECODE_OK, ThreadVars_::tm_func, TmThreadAppend(), TmThreadWaitForFlag(), tv, and ThreadVars_::type.

Referenced by BypassedFlowManagerThreadSpawn(), RunModeErfFileAutoFp(), RunModeErfFileSingle(), RunModeFilePcapAutoFp(), RunModeFilePcapSingle(), RunModeSetIPSAutoFp(), RunModeSetIPSWorker(), and RunModeSetLiveCaptureAutoFp().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadsRegisterThread()

int TmThreadsRegisterThread ( ThreadVars tv,
const int  type 
)
Return values
idthread id, or 0 if not found

Definition at line 2021 of file tm-threads.c.

References SCMutexLock.

Referenced by TmThreadCreateCmdThreadByName(), TmThreadCreateMgmtThread(), TmThreadCreateMgmtThreadByName(), and TmThreadCreatePacketHandler().

Here is the caller graph for this function:

◆ TmThreadsSetFlag()

void TmThreadsSetFlag ( ThreadVars tv,
uint32_t  flag 
)

Set a thread flag.

Definition at line 97 of file tm-threads.c.

References SC_ATOMIC_OR, and tv.

Referenced by TmThreadCreate(), and TmThreadPause().

Here is the caller graph for this function:

◆ TmThreadsSetThreadTimestamp()

void TmThreadsSetThreadTimestamp ( const int  id,
const struct timeval *  ts 
)

Definition at line 2097 of file tm-threads.c.

References SCMutexLock.

◆ TmThreadsSlotVarRun()

TmEcode TmThreadsSlotVarRun ( ThreadVars tv,
Packet p,
TmSlot slot 
)

Separate run function so we can call it recursively.

Definition at line 113 of file tm-threads.c.

References PACKET_PROFILING_TMM_END, PACKET_PROFILING_TMM_START, SC_ATOMIC_GET, TmSlot_::slot_next, TM_ECODE_FAILED, tv, and unlikely.

◆ TmThreadsTimeSubsysIsReady()

bool TmThreadsTimeSubsysIsReady ( void  )

Definition at line 2114 of file tm-threads.c.

References SCMutexLock.

◆ TmThreadsUnregisterThread()

void TmThreadsUnregisterThread ( const int  id)

Definition at line 2064 of file tm-threads.c.

References SCMutexLock.

◆ TmThreadsUnsetFlag()

void TmThreadsUnsetFlag ( ThreadVars tv,
uint32_t  flag 
)

Unset a thread flag.

Definition at line 105 of file tm-threads.c.

References SC_ATOMIC_AND, and tv.

Referenced by TmThreadContinue().

Here is the caller graph for this function:

◆ TmThreadTestThreadUnPaused()

void TmThreadTestThreadUnPaused ( ThreadVars tv)

Tests if the thread represented in the arg has been unpaused or not.

   The function would return if the thread tv has been unpaused or if the
   kill flag for the thread has been set.
Parameters
tvPointer to the TV instance.

Definition at line 1712 of file tm-threads.c.

References SleepUsec, THV_KILL, THV_PAUSE, TmThreadsCheckFlag(), and tv.

Here is the call graph for this function:

◆ TmThreadWaitForFlag()

void TmThreadWaitForFlag ( ThreadVars tv,
uint32_t  flags 
)

Waits till the specified flag(s) is(are) set. We don't bother if the kill flag has been set or not on the thread.

Parameters
tvPointer to the TV instance.

Definition at line 1730 of file tm-threads.c.

References flags, SleepUsec, TmThreadsCheckFlag(), and tv.

Referenced by TmThreadSpawn().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ TmThreadWaitOnThreadInit()

TmEcode TmThreadWaitOnThreadInit ( void  )

Used to check if all threads have finished their initialization. On finding an un-initialized thread, it waits till that thread completes its initialization, before proceeding to the next thread.

Return values
TM_ECODE_OKall initialized properly
TM_ECODE_FAILEDfailure

Definition at line 1824 of file tm-threads.c.

References ThreadVars_::name, ThreadVars_::next, SC_ATOMIC_GET, SC_ERR_THREAD_INIT, SCLogError, SCLogNotice, SCMutexLock, SCMutexUnlock, SleepUsec, THV_CLOSED, THV_DEAD, THV_FAILED, THV_INIT_DONE, TM_ECODE_FAILED, TM_ECODE_OK, TmThreadsCheckFlag(), tv, tv_root, tv_root_lock, TVT_MAX, TVT_MGMT, and TVT_PPT.

Here is the call graph for this function:

Variable Documentation

◆ tv_root

◆ tv_root_lock