suricata
|
#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"
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... | |
ThreadVars * | TmThreadsGetTVContainingSlot (TmSlot *tm_slot) |
void | TmSlotSetFuncAppend (ThreadVars *tv, TmModule *tm, const void *data) |
Appends a new entry to the slots. More... | |
TmSlot * | TmSlotGetSlotForTM (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... | |
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... | |
TmSlot * | TmThreadGetFirstTmSlotForPartialPattern (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... | |
ThreadVars * | TmThreadsGetCallingThread (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) |
uint16_t | TmThreadsGetWorkerThreadMax () |
int | TmThreadsInjectPacketsById (Packet **packets, const int id) |
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 1582 of file tm-threads.c.
#define MIN_WAIT_TIME 100 |
Definition at line 1581 of file tm-threads.c.
#define STEP 32 |
Definition at line 2134 of file tm-threads.c.
TmSlot* TmSlotGetSlotForTM | ( | int | tm_id | ) |
Returns the slot holding a TM with the particular tm_id.
tm_id | TM id of the TM whose slot has to be returned. |
slots | Pointer to the slot. |
Definition at line 696 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.
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 647 of file tm-threads.c.
References TmModule_::cap_flags, ThreadVars_::cap_flags, TmModule_::flags, TmModule_::Func, TmSlot_::Management, TmModule_::Management, TmModule_::PktAcqLoop, TmSlot_::PktAcqLoop, SC_ATOMIC_INITPTR, SCMalloc, TmSlot_::slot_initdata, TmSlot_::slot_next, TmSlot_::SlotFunc, TmSlot_::SlotThreadDeinit, TmSlot_::SlotThreadExitPrintStats, TmSlot_::SlotThreadInit, TmModule_::ThreadDeinit, TmModule_::ThreadExitPrintStats, TmModule_::ThreadInit, 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 1182 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 1877 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.
void TmThreadClearThreadsFamily | ( | int | family | ) |
Definition at line 1683 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 1821 of file tm-threads.c.
References THV_PAUSE, TmThreadsUnsetFlag(), and tv.
Referenced by TmThreadContinueDetectLoaderThreads(), and TmThreadContinueThreads().
void TmThreadContinueThreads | ( | ) |
Unpauses all threads present in tv_root.
Definition at line 1831 of file tm-threads.c.
References ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmThreadContinue(), tv, tv_root, tv_root_lock, and TVT_MAX.
uint32_t TmThreadCountThreadsByTmmFlags | ( | uint8_t | flags | ) |
returns a count of all the threads that match the flag
Definition at line 2037 of file tm-threads.c.
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 935 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().
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 1156 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 1095 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 1123 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 1065 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 1502 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 1373 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().
void TmThreadDumpThreads | ( | void | ) |
Definition at line 2063 of file tm-threads.c.
References ThreadVars_::decode_pq, flags, Tmq_::id, ThreadVars_::inq, PacketQueueNoLock_::len, PacketQueue_::len, ThreadVars_::name, Packet_::next, PktSrcToString(), Tmq_::pq, SC_ATOMIC_GET, SCLogNotice, SCMutexLock, ThreadVars_::stream_pq, ThreadVars_::stream_pq_local, ThreadVars_::tmm_flags, PacketQueueNoLock_::top, PacketQueue_::top, tv, tv_root, tv_root_lock, TVT_MAX, and ThreadVars_::type.
TmSlot* TmThreadGetFirstTmSlotForPartialPattern | ( | const char * | tm_name | ) |
Definition at line 1549 of file tm-threads.c.
References TmModule_::name, ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmSlot_::slot_next, TmSlot_::tm_id, ThreadVars_::tm_slots, TmModuleGetById(), tv, tv_root, tv_root_lock, and TVT_PPT.
int TmThreadGetNbThreads | ( | uint8_t | type | ) |
Definition at line 860 of file tm-threads.c.
References MAX_CPU_SET, ThreadsAffinityType_::nb_threads, SC_ERR_INVALID_ARGUMENT, 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 1741 of file tm-threads.c.
References ThreadVars_::ctrl_cond, ThreadVars_::ctrl_mutex, FatalError, SC_ERR_FATAL, SCCtrlCondInit, SCCtrlMutexInit, SCMalloc, and tv.
void TmThreadKillThreads | ( | void | ) |
Definition at line 1611 of file tm-threads.c.
References TmThreadKillThreadsFamily(), and TVT_MAX.
void TmThreadKillThreadsFamily | ( | int | family | ) |
Definition at line 1582 of file tm-threads.c.
References BUG_ON, MIN_WAIT_TIME, SCMutexLock, tv, tv_root, tv_root_lock, and TVT_MAX.
Referenced by TmThreadKillThreads().
void TmThreadPause | ( | ThreadVars * | tv | ) |
Pauses a thread.
tv | Pointer to a TV instance that has to be paused |
Definition at line 1850 of file tm-threads.c.
References THV_PAUSE, TmThreadsSetFlag(), and tv.
Referenced by TmThreadPauseThreads().
void TmThreadPauseThreads | ( | ) |
Pauses all threads present in tv_root.
Definition at line 1859 of file tm-threads.c.
References ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmThreadPause(), TmThreadsListThreads(), tv, tv_root, tv_root_lock, and TVT_MAX.
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 89 of file tm-threads.c.
References SC_ATOMIC_GET, and tv.
Referenced by FlowDisableFlowManagerThread(), TmThreadCheckThreadState(), TmThreadTestThreadUnPaused(), TmThreadWaitForFlag(), and TmThreadWaitOnThreadInit().
TmEcode TmThreadSetCPU | ( | ThreadVars * | tv, |
uint8_t | type | ||
) |
Definition at line 844 of file tm-threads.c.
References ThreadVars_::cpu_affinity, MAX_CPU_SET, SC_ERR_INVALID_ARGUMENT, 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 835 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 1665 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().
void TmThreadSetPrio | ( | ThreadVars * | tv | ) |
Adjusting nice value for threads.
Definition at line 799 of file tm-threads.c.
References ThreadVars_::name, SC_ERR_THREAD_NICE_PRIO, 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 788 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 876 of file tm-threads.c.
References ThreadVars_::cpu_affinity, ThreadVars_::name, SCGetThreadIdLong, SCLogPerf, THREAD_SET_AFFINITY, ThreadVars_::thread_setup_flags, and tv.
ThreadVars* TmThreadsGetCallingThread | ( | void | ) |
Returns the TV for the calling thread.
tv | Pointer to the ThreadVars instance for the calling thread; NULL on no match |
Definition at line 2015 of file tm-threads.c.
References ThreadVars_::next, SCMutexLock, SCMutexUnlock, ThreadVars_::t, tv, tv_root, tv_root_lock, and TVT_MAX.
void TmThreadsGetMinimalTimestamp | ( | struct timeval * | ts | ) |
Definition at line 2262 of file tm-threads.c.
References SCMutexLock.
ThreadVars* TmThreadsGetTVContainingSlot | ( | TmSlot * | tm_slot | ) |
Definition at line 617 of file tm-threads.c.
References ThreadVars_::next, SCMutexLock, SCMutexUnlock, TmSlot_::slot_next, ThreadVars_::tm_slots, tv, tv_root, tv_root_lock, and TVT_MAX.
uint16_t TmThreadsGetWorkerThreadMax | ( | ) |
Definition at line 2297 of file tm-threads.c.
References SC_ERR_RUNMODE, SCLogWarning, threading_detect_ratio, TmThreadGetNbThreads(), UtilCpuGetNumProcessorsOnline(), and WORKER_CPU_SET.
Referenced by RunModeSetIPSAutoFp(), and RunModeSetLiveCaptureAutoFp().
void TmThreadsInitThreadsTimestamp | ( | const struct timeval * | ts | ) |
Definition at line 2247 of file tm-threads.c.
References SCMutexLock.
Referenced by PcapFileDispatch().
void TmThreadsInjectFlowById | ( | Flow * | f, |
const int | id | ||
) |
inject a flow into a threads flow queue
Definition at line 2347 of file tm-threads.c.
References BUG_ON.
Referenced by FlowForceReassemblyForFlow().
int TmThreadsInjectPacketsById | ( | Packet ** | packets, |
const int | id | ||
) |
r | 1 if packet was accepted, 0 otherwise |
Definition at line 2318 of file tm-threads.c.
void TmThreadsListThreads | ( | void | ) |
Definition at line 2113 of file tm-threads.c.
References SCMutexLock.
Referenced by TmThreadPauseThreads().
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 1708 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().
int TmThreadsRegisterThread | ( | ThreadVars * | tv, |
const int | type | ||
) |
id | thread id, or 0 if not found |
Definition at line 2137 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 97 of file tm-threads.c.
References SC_ATOMIC_OR, and tv.
Referenced by FlowDisableFlowManagerThread(), TmThreadCreate(), and TmThreadPause().
void TmThreadsSetThreadTimestamp | ( | const int | id, |
const struct timeval * | ts | ||
) |
Definition at line 2213 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 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.
bool TmThreadsTimeSubsysIsReady | ( | void | ) |
Definition at line 2230 of file tm-threads.c.
References SCMutexLock.
void TmThreadsUnregisterThread | ( | const int | id | ) |
Definition at line 2180 of file tm-threads.c.
References SCMutexLock.
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().
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.
tv | Pointer to the TV instance. |
Definition at line 1789 of file tm-threads.c.
References SleepUsec, THV_KILL, THV_PAUSE, TmThreadsCheckFlag(), 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 1807 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 1901 of file tm-threads.c.
References ThreadVars_::name, ThreadVars_::next, SC_ATOMIC_GET, SC_ERR_THREAD_INIT, SCLogError, SCLogNotice, SCMutexLock, SCMutexUnlock, SleepUsec, strlcat(), strlcpy(), thread_name_autofp, thread_name_flow_mgr, thread_name_flow_rec, thread_name_verdict, thread_name_workers, 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.
ThreadVars* tv_root[TVT_MAX] = { NULL } |
Definition at line 78 of file tm-threads.c.
Referenced by FlowDisableFlowManagerThread(), TmSlotGetSlotForTM(), TmThreadAppend(), TmThreadCheckThreadState(), TmThreadClearThreadsFamily(), TmThreadContinueDetectLoaderThreads(), TmThreadContinueThreads(), TmThreadDisableReceiveThreads(), TmThreadDumpThreads(), TmThreadGetFirstTmSlotForPartialPattern(), TmThreadKillThreadsFamily(), TmThreadPauseThreads(), TmThreadsGetCallingThread(), TmThreadsGetTVContainingSlot(), TmThreadWaitOnThreadInit(), and TmThreadWakeupDetectLoaderThreads().
SCMutex tv_root_lock = SCMUTEX_INITIALIZER |
Definition at line 81 of file tm-threads.c.
Referenced by FlowDisableFlowManagerThread(), TmSlotGetSlotForTM(), TmThreadAppend(), TmThreadCheckThreadState(), TmThreadClearThreadsFamily(), TmThreadContinueDetectLoaderThreads(), TmThreadContinueThreads(), TmThreadDisableReceiveThreads(), TmThreadDumpThreads(), TmThreadGetFirstTmSlotForPartialPattern(), TmThreadKillThreadsFamily(), TmThreadPauseThreads(), TmThreadsGetCallingThread(), TmThreadsGetTVContainingSlot(), TmThreadWaitOnThreadInit(), and TmThreadWakeupDetectLoaderThreads().