suricata
counters.h File Reference
#include "threads.h"
Include dependency graph for counters.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  StatsCounter_
 Container to hold the counter variable. More...
 
struct  StatsPublicThreadContext_
 Stats Context for a ThreadVars instance. More...
 
struct  StatsLocalCounter_
 Storage for local counters, with a link to the public counter used for syncs. More...
 
struct  StatsPrivateThreadContext_
 used to hold the private version of the counters registered More...
 

Typedefs

typedef struct StatsCounter_ StatsCounter
 Container to hold the counter variable. More...
 
typedef struct StatsPublicThreadContext_ StatsPublicThreadContext
 Stats Context for a ThreadVars instance. More...
 
typedef struct StatsLocalCounter_ StatsLocalCounter
 Storage for local counters, with a link to the public counter used for syncs. More...
 
typedef struct StatsPrivateThreadContext_ StatsPrivateThreadContext
 used to hold the private version of the counters registered More...
 

Functions

void StatsInit (void)
 Initializes the perf counter api. Things are hard coded currently. More work to be done when we implement multiple interfaces. More...
 
void StatsSetupPostConfigPreOutput (void)
 
void StatsSetupPostConfigPostOutput (void)
 
void StatsSpawnThreads (void)
 Spawns the wakeup, and the management thread used by the stats api. More...
 
void StatsRegisterTests (void)
 
bool StatsEnabled (void)
 
void StatsReleaseResources (void)
 Releases the resources allotted by the Stats API. More...
 
uint16_t StatsRegisterCounter (const char *, struct ThreadVars_ *)
 Registers a normal, unqualified counter. More...
 
uint16_t StatsRegisterAvgCounter (const char *, struct ThreadVars_ *)
 Registers a counter, whose value holds the average of all the values assigned to it. More...
 
uint16_t StatsRegisterMaxCounter (const char *, struct ThreadVars_ *)
 Registers a counter, whose value holds the maximum of all the values assigned to it. More...
 
uint16_t StatsRegisterGlobalCounter (const char *cname, uint64_t(*Func)(void))
 Registers a counter, which represents a global value. More...
 
void StatsAddUI64 (struct ThreadVars_ *, uint16_t, uint64_t)
 Adds a value of type uint64_t to the local counter. More...
 
void StatsSetUI64 (struct ThreadVars_ *, uint16_t, uint64_t)
 Sets a value of type double to the local counter. More...
 
void StatsIncr (struct ThreadVars_ *, uint16_t)
 Increments the local counter. More...
 
void StatsDecr (struct ThreadVars_ *, uint16_t)
 Decrements the local counter. More...
 
int StatsUpdateCounterArray (StatsPrivateThreadContext *, StatsPublicThreadContext *)
 the private stats store with the public stats store More...
 
uint64_t StatsGetLocalCounterValue (struct ThreadVars_ *, uint16_t)
 Get the value of the local copy of the counter that hold this id. More...
 
int StatsSetupPrivate (struct ThreadVars_ *)
 
void StatsThreadCleanup (struct ThreadVars_ *)
 
void StatsSyncCounters (struct ThreadVars_ *tv)
 
void StatsSyncCountersIfSignalled (struct ThreadVars_ *tv)
 

Detailed Description

Typedef Documentation

◆ StatsCounter

typedef struct StatsCounter_ StatsCounter

Container to hold the counter variable.

◆ StatsLocalCounter

Storage for local counters, with a link to the public counter used for syncs.

◆ StatsPrivateThreadContext

used to hold the private version of the counters registered

◆ StatsPublicThreadContext

Stats Context for a ThreadVars instance.

Function Documentation

◆ StatsAddUI64()

void StatsAddUI64 ( ThreadVars tv,
uint16_t  id,
uint64_t  x 
)

Adds a value of type uint64_t to the local counter.

Parameters
idID of the counter as set by the API
pcaCounter array that holds the local counter for this TM
xValue to add to this local counter

Definition at line 146 of file counters.c.

References BUG_ON, StatsPrivateThreadContext_::head, StatsPrivateThreadContext_::initialized, ThreadVars_::perf_private_ctx, StatsPrivateThreadContext_::size, tv, StatsLocalCounter_::updates, and StatsLocalCounter_::value.

Referenced by AppLayerIncTxCounter(), and DecodeUpdatePacketCounters().

Here is the caller graph for this function:

◆ StatsDecr()

void StatsDecr ( ThreadVars tv,
uint16_t  id 
)

Decrements the local counter.

Parameters
idIndex of the counter in the counter array
pcaCounter array that holds the local counters for this TM

Definition at line 186 of file counters.c.

References BUG_ON, StatsPrivateThreadContext_::head, StatsPrivateThreadContext_::initialized, ThreadVars_::perf_private_ctx, StatsPrivateThreadContext_::size, tv, StatsLocalCounter_::updates, and StatsLocalCounter_::value.

◆ StatsEnabled()

bool StatsEnabled ( void  )

Definition at line 118 of file counters.c.

◆ StatsGetLocalCounterValue()

uint64_t StatsGetLocalCounterValue ( ThreadVars tv,
uint16_t  id 
)

Get the value of the local copy of the counter that hold this id.

Parameters
tvthreadvars
idThe counter id.
Return values
0on success.
-1on error.

Definition at line 1260 of file counters.c.

References BUG_ON, StatsPrivateThreadContext_::head, ThreadVars_::perf_private_ctx, StatsPrivateThreadContext_::size, tv, and StatsLocalCounter_::value.

Referenced by ReceiveErfDagThreadExitStats().

Here is the caller graph for this function:

◆ StatsIncr()

◆ StatsInit()

void StatsInit ( void  )

Initializes the perf counter api. Things are hard coded currently. More work to be done when we implement multiple interfaces.

Definition at line 885 of file counters.c.

References BUG_ON.

Referenced by PreRunInit().

Here is the caller graph for this function:

◆ StatsRegisterAvgCounter()

uint16_t StatsRegisterAvgCounter ( const char *  name,
struct ThreadVars_ tv 
)

Registers a counter, whose value holds the average of all the values assigned to it.

Parameters
nameName of the counter, to be registered
tvPointer to the ThreadVars instance for which the counter would be registered
Return values
idCounter id for the newly registered counter, or the already present counter

Definition at line 981 of file counters.c.

Referenced by DecodeRegisterPerfCounters().

Here is the caller graph for this function:

◆ StatsRegisterCounter()

uint16_t StatsRegisterCounter ( const char *  name,
struct ThreadVars_ tv 
)

Registers a normal, unqualified counter.

Parameters
nameName of the counter, to be registered
tvPointer to the ThreadVars instance for which the counter would be registered
Return values
idCounter id for the newly registered counter, or the already present counter

Definition at line 961 of file counters.c.

Referenced by CaptureStatsSetup(), DecodeRegisterPerfCounters(), ExceptionPolicySetStatsCounters(), FlowEndCountersRegister(), ReceiveErfDagThreadInit(), and StreamTcpThreadInit().

Here is the caller graph for this function:

◆ StatsRegisterGlobalCounter()

uint16_t StatsRegisterGlobalCounter ( const char *  name,
uint64_t(*)(void)  Func 
)

Registers a counter, which represents a global value.

Parameters
nameName of the counter, to be registered
FuncFunction Pointer returning a uint64_t
Return values
idCounter id for the newly registered counter, or the already present counter

Definition at line 1019 of file counters.c.

Referenced by AppLayerRegisterGlobalCounters(), and OutputFilestoreRegisterGlobalCounters().

Here is the caller graph for this function:

◆ StatsRegisterMaxCounter()

uint16_t StatsRegisterMaxCounter ( const char *  name,
struct ThreadVars_ tv 
)

Registers a counter, whose value holds the maximum of all the values assigned to it.

Parameters
nameName of the counter, to be registered
tvPointer to the ThreadVars instance for which the counter would be registered
Return values
thecounter id for the newly registered counter, or the already present counter

Definition at line 1001 of file counters.c.

Referenced by DecodeRegisterPerfCounters().

Here is the caller graph for this function:

◆ StatsRegisterTests()

void StatsRegisterTests ( void  )

Definition at line 1574 of file counters.c.

References UtRegisterTest().

Here is the call graph for this function:

◆ StatsReleaseResources()

void StatsReleaseResources ( void  )

Releases the resources allotted by the Stats API.

Definition at line 1272 of file counters.c.

◆ StatsSetUI64()

void StatsSetUI64 ( ThreadVars tv,
uint16_t  id,
uint64_t  x 
)

Sets a value of type double to the local counter.

Parameters
idIndex of the local counter in the counter array
pcaPointer to the StatsPrivateThreadContext
xThe value to set for the counter

Definition at line 207 of file counters.c.

References BUG_ON, StatsPrivateThreadContext_::head, StatsPrivateThreadContext_::initialized, StatsLocalCounter_::pc, ThreadVars_::perf_private_ctx, StatsPrivateThreadContext_::size, STATS_TYPE_MAXIMUM, STATS_TYPE_NORMAL, tv, StatsCounter_::type, StatsLocalCounter_::updates, and StatsLocalCounter_::value.

Referenced by DecodeUpdatePacketCounters().

Here is the caller graph for this function:

◆ StatsSetupPostConfigPostOutput()

void StatsSetupPostConfigPostOutput ( void  )

Definition at line 900 of file counters.c.

Referenced by PreRunPostPrivsDropInit().

Here is the caller graph for this function:

◆ StatsSetupPostConfigPreOutput()

void StatsSetupPostConfigPreOutput ( void  )

Definition at line 895 of file counters.c.

Referenced by PreRunPostPrivsDropInit().

Here is the caller graph for this function:

◆ StatsSetupPrivate()

int StatsSetupPrivate ( struct ThreadVars_ )

Definition at line 1214 of file counters.c.

◆ StatsSpawnThreads()

void StatsSpawnThreads ( void  )

Spawns the wakeup, and the management thread used by the stats api.

The threads use the condition variable in the thread vars to control their wait loops to make sure the main thread can quickly kill them.

Definition at line 912 of file counters.c.

References SCEnter.

◆ StatsSyncCounters()

void StatsSyncCounters ( struct ThreadVars_ tv)

Definition at line 449 of file counters.c.

References ThreadVars_::perf_private_ctx, ThreadVars_::perf_public_ctx, StatsUpdateCounterArray(), and tv.

Here is the call graph for this function:

◆ StatsSyncCountersIfSignalled()

void StatsSyncCountersIfSignalled ( struct ThreadVars_ tv)

Definition at line 454 of file counters.c.

References ThreadVars_::perf_private_ctx, ThreadVars_::perf_public_ctx, SC_ATOMIC_GET, StatsUpdateCounterArray(), and tv.

Referenced by TmqhInputFlow(), and TmqhInputSimple().

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

◆ StatsThreadCleanup()

void StatsThreadCleanup ( struct ThreadVars_ )

Definition at line 1313 of file counters.c.

◆ StatsUpdateCounterArray()

int StatsUpdateCounterArray ( StatsPrivateThreadContext pca,
StatsPublicThreadContext pctx 
)

the private stats store with the public stats store

Parameters
pcaPointer to the StatsPrivateThreadContext
pctxPointer the tv's StatsPublicThreadContext
Return values
1on success
-1on error

Definition at line 1232 of file counters.c.

References StatsPrivateThreadContext_::head, StatsPublicThreadContext_::m, SCLogDebug, SCMutexLock, and StatsPrivateThreadContext_::size.

Referenced by StatsSyncCounters(), and StatsSyncCountersIfSignalled().

Here is the caller graph for this function: