suricata
|
#include "suricata-common.h"
#include "suricata.h"
#include "stream.h"
#include "runmodes.h"
#include "thread-callbacks.h"
#include "threadvars.h"
#include "thread-storage.h"
#include "tm-queues.h"
#include "tm-queuehandlers.h"
#include "tm-threads.h"
#include "tmqh-packetpool.h"
#include "threads.h"
#include "util-affinity.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 "util-validate.h"
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 | TmThreadsProcessDecodePseudoPackets (ThreadVars *tv, PacketQueueNoLock *decode_pq, TmSlot *slot) |
TmEcode | TmThreadsSlotVarRun (ThreadVars *tv, Packet *p, TmSlot *slot) |
Separate run function so we can call it recursively. More... | |
bool | TmThreadsWaitForUnpause (ThreadVars *tv) |
Wait for a thread to become unpaused. More... | |
void | TmSlotSetFuncAppend (ThreadVars *tv, TmModule *tm, const void *data) |
Appends a new entry to the slots. 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... | |
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 *(*fn_p)(void *), int mucond) |
Creates and returns the TV instance for a new thread. More... | |
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. More... | |
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. More... | |
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. More... | |
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. 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... | |
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 | 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... | |
TmEcode | TmThreadWaitOnThreadRunning (void) |
Waits for all threads to be in a running state. More... | |
void | TmThreadContinueThreads (void) |
Unpauses 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... | |
uint32_t | TmThreadCountThreadsByTmmFlags (uint8_t flags) |
returns a count of all the threads that match the flag More... | |
void | TmThreadsListThreads (void) |
int | TmThreadsRegisterThread (ThreadVars *tv, const int type) |
void | TmThreadsUnregisterThread (const int id) |
void | TmThreadsSetThreadTimestamp (const int id, const SCTime_t ts) |
bool | TmThreadsTimeSubsysIsReady (void) |
void | TmThreadsInitThreadsTimestamp (const SCTime_t ts) |
void | TmThreadsGetMinimalTimestamp (struct timeval *ts) |
uint16_t | TmThreadsGetWorkerThreadMax (void) |
void | TmThreadsInjectFlowById (Flow *f, const int id) |
inject a flow into a threads flow queue More... | |
Variables | |
ThreadVars * | tv_root [TVT_MAX] = { NULL } |
SCMutex | tv_root_lock = SCMUTEX_INITIALIZER |
Thread management functions.
Definition in file tm-threads.c.
#define MAX_WAIT_TIME 999999 |
Definition at line 1537 of file tm-threads.c.
#define MIN_WAIT_TIME 100 |
Definition at line 1536 of file tm-threads.c.
#define STEP 32 |
Definition at line 2109 of file tm-threads.c.
void TmSlotSetFuncAppend | ( | ThreadVars * | tv, |
TmModule * | tm, | ||
const void * | data | ||
) |
Appends a new entry to the slots.
tv | TV the slot is attached to. |
tm | TM to append. |
data | Data to be passed on to the slot init function. |
The | allocated TmSlot or NULL if there is an error |
Definition at line 649 of file tm-threads.c.
References ThreadVars_::break_loop, TmModule_::cap_flags, ThreadVars_::cap_flags, TmModule_::flags, TmModule_::Func, TmSlot_::Management, TmModule_::Management, TmModule_::PktAcqBreakLoop, TmModule_::PktAcqLoop, TmSlot_::PktAcqLoop, SC_ATOMIC_INITPTR, SCCalloc, TmSlot_::slot_initdata, TmSlot_::slot_next, TmSlot_::SlotFunc, TmSlot_::SlotThreadDeinit, TmSlot_::SlotThreadExitPrintStats, TmSlot_::SlotThreadInit, TmModule_::ThreadDeinit, TmModule_::ThreadExitPrintStats, TmModule_::ThreadInit, TmSlot_::tm_flags, TmSlot_::tm_id, ThreadVars_::tm_slots, ThreadVars_::tmm_flags, TmModuleGetIDForTM(), tv, and unlikely.
Referenced by RunModeErfFileAutoFp(), RunModeErfFileSingle(), RunModeFilePcapAutoFp(), RunModeFilePcapSingle(), RunModeSetIPSAutoFp(), RunModeSetIPSWorker(), RunModeSetLiveCaptureAutoFp(), TmThreadCreateCmdThreadByName(), and TmThreadCreateMgmtThreadByName().
void TmThreadAppend | ( | ThreadVars * | tv, |
int | type | ||
) |
Appends this TV to tv_root based on its type.
type | holds the type this TV belongs to. |
Definition at line 1160 of file tm-threads.c.
References ThreadVars_::next, SCMutexLock, SCMutexUnlock, tv, tv_root, tv_root_lock, and type.
Referenced by TmThreadSpawn().
void TmThreadCheckThreadState | ( | void | ) |
Used to check the thread for certain conditions of failure.
Definition at line 1924 of file tm-threads.c.
References FatalError, ThreadVars_::name, ThreadVars_::next, SCMutexLock, SCMutexUnlock, THV_FAILED, TmThreadsCheckFlag(), tv, tv_root, tv_root_lock, and TVT_MAX.
Referenced by SuricataMainLoop().
void TmThreadClearThreadsFamily | ( | int | family | ) |
Definition at line 1638 of file tm-threads.c.
References ThreadVars_::next, SCMutexLock, tv, tv_root, tv_root_lock, and TVT_MAX.
void TmThreadContinue | ( | ThreadVars * | tv | ) |
Unpauses a thread.
tv | Pointer to a TV instance that has to be unpaused |
Definition at line 1772 of file tm-threads.c.
References THV_PAUSE, TmThreadsUnsetFlag(), and tv.
Referenced by TmThreadContinueDetectLoaderThreads(), and TmThreadContinueThreads().
void TmThreadContinueThreads | ( | void | ) |
Unpauses all threads present in tv_root.
Definition at line 1908 of file tm-threads.c.
References ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmThreadContinue(), tv, tv_root, tv_root_lock, and TVT_MAX.
Referenced by SuricataPostInit().
uint32_t TmThreadCountThreadsByTmmFlags | ( | uint8_t | flags | ) |
returns a count of all the threads that match the flag
Definition at line 2010 of file tm-threads.c.
References cnt, flags, ThreadVars_::next, SCMutexLock, SCMutexUnlock, ThreadVars_::tmm_flags, tv, tv_root, tv_root_lock, and TVT_MAX.
Referenced by PacketPoolPostRunmodes().
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.
name | Name of this TV instance |
inq_name | Incoming queue name |
inqh_name | Incoming queue handler name as set by TmqhSetup() |
outq_name | Outgoing queue name |
outqh_name | Outgoing queue handler as set by TmqhSetup() |
slots | String representation for the slot function to be used |
fn_p | Pointer to function when "slots" is of type "custom" |
mucond | Flag to indicate whether to initialize the condition and the mutex variables for this newly created TV. |
the | newly created TV instance, or NULL on error |
Definition at line 913 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, SCCalloc, SCLogDebug, SCMutexInit, strlcpy(), ThreadStorageSize(), THV_PAUSE, THV_USE, TmqCreateQueue(), TmqGetQueueByName(), ThreadVars_::tmqh_in, ThreadVars_::tmqh_out, TmqhGetQueueHandlerByName(), TmqhNameToID(), TmThreadsSetFlag(), tv, unlikely, and Tmq_::writer_cnt.
Referenced by TmThreadCreateCmdThreadByName(), TmThreadCreateMgmtThread(), TmThreadCreateMgmtThreadByName(), and TmThreadCreatePacketHandler().
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.
name | Name of this TV instance |
module | Name of TmModule with COMMAND flag set. |
mucond | Flag to indicate whether to initialize the condition and the mutex variables for this newly created TV. |
the | newly created TV instance, or NULL on error |
Definition at line 1134 of file tm-threads.c.
References ThreadVars_::id, m, MANAGEMENT_CPU_SET, TmModuleGetByName(), TmSlotSetFuncAppend(), TmThreadCreate(), TmThreadSetCPU(), TmThreadsRegisterThread(), tv, TVT_CMD, and ThreadVars_::type.
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.
name | Name of this TV instance |
fn_p | Pointer to function when "slots" is of type "custom" |
mucond | Flag to indicate whether to initialize the condition and the mutex variables for this newly created TV. |
the | newly created TV instance, or NULL on error |
Definition at line 1073 of file tm-threads.c.
References ThreadVars_::id, MANAGEMENT_CPU_SET, TmThreadCreate(), TmThreadSetCPU(), TmThreadsRegisterThread(), tv, TVT_MGMT, and ThreadVars_::type.
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.
name | Name of this TV instance |
module | Name of TmModule with MANAGEMENT flag set. |
mucond | Flag to indicate whether to initialize the condition and the mutex variables for this newly created TV. |
the | newly created TV instance, or NULL on error |
Definition at line 1101 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().
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.
name | Name of this TV instance |
inq_name | Incoming queue name |
inqh_name | Incoming queue handler name as set by TmqhSetup() |
outq_name | Outgoing queue name |
outqh_name | Outgoing queue handler as set by TmqhSetup() |
slots | String representation for the slot function to be used |
the | newly created TV instance, or NULL on error |
Definition at line 1044 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().
void TmThreadDisablePacketThreads | ( | void | ) |
Disable all packet threads.
Definition at line 1487 of file tm-threads.c.
Referenced by PostRunDeinit().
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 1358 of file tm-threads.c.
References FatalError, TmModule_::flags, ThreadVars_::name, 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().
int TmThreadGetNbThreads | ( | uint8_t | type | ) |
Definition at line 838 of file tm-threads.c.
References MAX_CPU_SET, ThreadsAffinityType_::nb_threads, SCLogError, thread_affinity, and type.
Referenced by RunModeErfFileAutoFp(), RunModeFilePcapAutoFp(), and TmThreadsGetWorkerThreadMax().
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.
tv | Pointer to a TV instance |
Definition at line 1719 of file tm-threads.c.
References ThreadVars_::ctrl_cond, ThreadVars_::ctrl_mutex, FatalError, SCCtrlCondInit, SCCtrlMutexInit, SCMalloc, and tv.
void TmThreadKillThreads | ( | void | ) |
Definition at line 1566 of file tm-threads.c.
References TmThreadKillThreadsFamily(), and TVT_MAX.
Referenced by SuricataShutdown().
void TmThreadKillThreadsFamily | ( | int | family | ) |
Definition at line 1537 of file tm-threads.c.
References BUG_ON, MIN_WAIT_TIME, SCMutexLock, tv, tv_root, tv_root_lock, and TVT_MAX.
Referenced by TmThreadKillThreads().
int TmThreadsCheckFlag | ( | ThreadVars * | tv, |
uint32_t | flag | ||
) |
Check if a thread flag is set.
1 | flag is set. |
0 | flag is not set. |
Definition at line 93 of file tm-threads.c.
References SC_ATOMIC_GET, and tv.
Referenced by FlowDisableFlowManagerThread(), TmThreadCheckThreadState(), TmThreadsWaitForUnpause(), TmThreadWaitForFlag(), and TmThreadWaitOnThreadInit().
TmEcode TmThreadSetCPU | ( | ThreadVars * | tv, |
uint8_t | type | ||
) |
Definition at line 822 of file tm-threads.c.
References ThreadVars_::cpu_affinity, MAX_CPU_SET, SCLogError, THREAD_SET_AFFTYPE, ThreadVars_::thread_setup_flags, threading_set_cpu_affinity, TM_ECODE_FAILED, TM_ECODE_OK, tv, and type.
Referenced by RunModeFilePcapAutoFp(), RunModeFilePcapSingle(), RunModeSetIPSAutoFp(), RunModeSetIPSWorker(), RunModeSetLiveCaptureAutoFp(), TmThreadCreateCmdThreadByName(), TmThreadCreateMgmtThread(), and TmThreadCreateMgmtThreadByName().
TmEcode TmThreadSetCPUAffinity | ( | ThreadVars * | tv, |
uint16_t | cpu | ||
) |
Set the thread options (cpu affinity).
tv | pointer to the ThreadVars to setup the affinity. |
cpu | cpu on which affinity is set. |
TM_ECODE_OK |
Definition at line 813 of file tm-threads.c.
References ThreadVars_::cpu_affinity, THREAD_SET_AFFINITY, ThreadVars_::thread_setup_flags, TM_ECODE_OK, and tv.
Referenced by RunModeErfFileAutoFp().
void TmThreadSetGroupName | ( | ThreadVars * | tv, |
const char * | name | ||
) |
Definition at line 1620 of file tm-threads.c.
References SCLogError, SCStrdup, ThreadVars_::thread_group_name, tv, and unlikely.
Referenced by RunModeErfFileAutoFp(), RunModeFilePcapAutoFp(), RunModeSetIPSAutoFp(), and RunModeSetLiveCaptureAutoFp().
void TmThreadSetPrio | ( | ThreadVars * | tv | ) |
Adjusting nice value for threads.
Definition at line 776 of file tm-threads.c.
References ThreadVars_::name, SCEnter, SCLogDebug, SCLogError, SCReturn, ThreadVars_::thread_priority, and tv.
TmEcode TmThreadSetThreadPriority | ( | ThreadVars * | tv, |
int | prio | ||
) |
Set the thread options (thread priority).
tv | Pointer to the ThreadVars to setup the thread priority. |
TM_ECODE_OK. |
Definition at line 765 of file tm-threads.c.
References ThreadVars_::thread_priority, THREAD_SET_PRIORITY, ThreadVars_::thread_setup_flags, TM_ECODE_OK, and tv.
Referenced by RunModeErfFileAutoFp().
TmEcode TmThreadSetupOptions | ( | ThreadVars * | tv | ) |
Set the thread options (cpu affinitythread). Priority should be already set by pthread_create.
tv | pointer to the ThreadVars of the calling thread. |
Definition at line 854 of file tm-threads.c.
References ThreadVars_::cpu_affinity, ThreadVars_::name, SCGetThreadIdLong, SCLogPerf, THREAD_SET_AFFINITY, ThreadVars_::thread_setup_flags, and tv.
void TmThreadsGetMinimalTimestamp | ( | struct timeval * | ts | ) |
Definition at line 2250 of file tm-threads.c.
References SCTIME_INITIALIZER.
uint16_t TmThreadsGetWorkerThreadMax | ( | void | ) |
Definition at line 2287 of file tm-threads.c.
References SCLogWarning, threading_detect_ratio, TmThreadGetNbThreads(), UtilCpuGetNumProcessorsOnline(), and WORKER_CPU_SET.
Referenced by RunModeSetIPSAutoFp(), and RunModeSetLiveCaptureAutoFp().
void TmThreadsInitThreadsTimestamp | ( | const SCTime_t | ts | ) |
Definition at line 2234 of file tm-threads.c.
Referenced by PcapFileDispatch().
void TmThreadsInjectFlowById | ( | Flow * | f, |
const int | id | ||
) |
inject a flow into a threads flow queue
Definition at line 2305 of file tm-threads.c.
References BUG_ON.
Referenced by FlowSendToLocalThread().
void TmThreadsListThreads | ( | void | ) |
Definition at line 2088 of file tm-threads.c.
References SCMutexLock.
TmEcode TmThreadSpawn | ( | ThreadVars * | tv | ) |
Spawns a thread associated with the ThreadVars instance tv.
TM_ECODE_OK | on success and TM_ECODE_FAILED on failure |
Definition at line 1663 of file tm-threads.c.
References FatalError, SCLogDebug, ThreadVars_::t, threading_set_stack_size, THV_INIT_DONE, THV_RUNNING_DONE, TM_ECODE_OK, ThreadVars_::tm_func, TmThreadAppend(), TmThreadWaitForFlag(), tv, and ThreadVars_::type.
Referenced by BypassedFlowManagerThreadSpawn(), RunModeErfFileAutoFp(), RunModeErfFileSingle(), RunModeFilePcapAutoFp(), RunModeFilePcapSingle(), RunModeSetIPSAutoFp(), RunModeSetIPSWorker(), and RunModeSetLiveCaptureAutoFp().
TmEcode TmThreadsProcessDecodePseudoPackets | ( | ThreadVars * | tv, |
PacketQueueNoLock * | decode_pq, | ||
TmSlot * | slot | ||
) |
Definition at line 114 of file tm-threads.c.
References DEBUG_VALIDATE_BUG_ON, Packet_::flow, PacketDequeueNoLock(), PacketQueueNoLock_::top, and unlikely.
int TmThreadsRegisterThread | ( | ThreadVars * | tv, |
const int | type | ||
) |
id | thread id, or 0 if not found |
Definition at line 2112 of file tm-threads.c.
References SCMutexLock.
Referenced by TmThreadCreateCmdThreadByName(), TmThreadCreateMgmtThread(), TmThreadCreateMgmtThreadByName(), and TmThreadCreatePacketHandler().
void TmThreadsSetFlag | ( | ThreadVars * | tv, |
uint32_t | flag | ||
) |
Set a thread flag.
Definition at line 101 of file tm-threads.c.
References SC_ATOMIC_OR, and tv.
Referenced by FlowDisableFlowManagerThread(), ReceiveErfDagLoop(), ReceiveErfFileLoop(), TmThreadCreate(), and TmThreadsWaitForUnpause().
void TmThreadsSetThreadTimestamp | ( | const int | id, |
const SCTime_t | ts | ||
) |
Definition at line 2188 of file tm-threads.c.
References SCMutexLock.
TmEcode TmThreadsSlotVarRun | ( | ThreadVars * | tv, |
Packet * | p, | ||
TmSlot * | slot | ||
) |
Separate run function so we can call it recursively.
Definition at line 133 of file tm-threads.c.
References DEBUG_VALIDATE_BUG_ON, Packet_::flow, PACKET_PROFILING_TMM_END, PACKET_PROFILING_TMM_START, SC_ATOMIC_GET, TmSlot_::slot_next, TM_ECODE_FAILED, tv, and unlikely.
bool TmThreadsTimeSubsysIsReady | ( | void | ) |
Definition at line 2214 of file tm-threads.c.
References SCMutexLock, and SCTIME_INITIALIZER.
void TmThreadsUnregisterThread | ( | const int | id | ) |
Definition at line 2155 of file tm-threads.c.
References SCMutexLock.
void TmThreadsUnsetFlag | ( | ThreadVars * | tv, |
uint32_t | flag | ||
) |
Unset a thread flag.
Definition at line 109 of file tm-threads.c.
References SC_ATOMIC_AND, and tv.
Referenced by TmThreadContinue(), and TmThreadsWaitForUnpause().
bool TmThreadsWaitForUnpause | ( | ThreadVars * | tv | ) |
Wait for a thread to become unpaused.
Also returns if the kill flag is set.
Definition at line 364 of file tm-threads.c.
References SleepUsec, THV_KILL, THV_PAUSE, THV_PAUSED, TmThreadsCheckFlag(), TmThreadsSetFlag(), TmThreadsUnsetFlag(), and tv.
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.
tv | Pointer to the TV instance. |
Definition at line 1760 of file tm-threads.c.
References flags, SleepUsec, TmThreadsCheckFlag(), and tv.
Referenced by TmThreadSpawn().
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.
TM_ECODE_OK | all initialized properly |
TM_ECODE_FAILED | failure |
Definition at line 1947 of file tm-threads.c.
References ThreadVars_::name, ThreadVars_::next, SC_ATOMIC_GET, SCLogError, 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, and TVT_MAX.
Referenced by SuricataPostInit().
TmEcode TmThreadWaitOnThreadRunning | ( | void | ) |
Waits for all threads to be in a running state.
TM_ECODE_OK | if all are running or error if a thread failed |
Definition at line 1839 of file tm-threads.c.
References TVT_MAX.
Referenced by SuricataPostInit().
ThreadVars* tv_root[TVT_MAX] = { NULL } |
Definition at line 82 of file tm-threads.c.
Referenced by FlowDisableFlowManagerThread(), TmThreadAppend(), TmThreadCheckThreadState(), TmThreadClearThreadsFamily(), TmThreadContinueDetectLoaderThreads(), TmThreadContinueThreads(), TmThreadCountThreadsByTmmFlags(), TmThreadDisableReceiveThreads(), TmThreadKillThreadsFamily(), and TmThreadWaitOnThreadInit().
SCMutex tv_root_lock = SCMUTEX_INITIALIZER |
Definition at line 85 of file tm-threads.c.
Referenced by FlowDisableFlowManagerThread(), TmThreadAppend(), TmThreadCheckThreadState(), TmThreadClearThreadsFamily(), TmThreadContinueDetectLoaderThreads(), TmThreadContinueThreads(), TmThreadCountThreadsByTmmFlags(), TmThreadDisableReceiveThreads(), TmThreadKillThreadsFamily(), and TmThreadWaitOnThreadInit().