suricata
|
Go to the source code of this file.
Data Structures | |
struct | PktPoolLockedStack_ |
struct | PktPool_ |
Typedefs | |
typedef struct PktPool_ | PktPool |
Functions | |
struct PktPoolLockedStack_ | __attribute__ ((aligned(CLS))) PktPoolLockedStack |
SC_ATOMIC_DECLARE (int, sync_now) | |
Packet * | TmqhInputPacketpool (ThreadVars *) |
void | TmqhOutputPacketpool (ThreadVars *, Packet *) |
void | TmqhReleasePacketsToPacketPool (PacketQueue *) |
Release all the packets in the queue back to the packetpool. Mainly used by threads that have failed, and wants to return the packets back to the packetpool. More... | |
void | TmqhPacketpoolRegister (void) |
TmqhPacketpoolRegister \initonly. More... | |
Packet * | PacketPoolGetPacket (void) |
Get a new packet from the packet pool. More... | |
void | PacketPoolWait (void) |
void | PacketPoolWaitForN (int n) |
Wait until we have the requested amount of packets in the pool. More... | |
void | PacketPoolReturnPacket (Packet *p) |
Return packet to Packet pool. More... | |
void | PacketPoolInit (void) |
void | PacketPoolInitEmpty (void) |
void | PacketPoolDestroy (void) |
void | PacketPoolPostRunmodes (void) |
Set the max_pending_return_packets value. More... | |
Variables | |
SCMutex | mutex |
SCCondT | cond |
Packet * | head |
Definition in file tmqh-packetpool.h.
struct PktPoolLockedStack_ __attribute__ | ( | (aligned(CLS)) | ) |
void PacketPoolDestroy | ( | void | ) |
Definition at line 316 of file tmqh-packetpool.c.
Packet* PacketPoolGetPacket | ( | void | ) |
Get a new packet from the packet pool.
Only allocates from the thread's local stack, or mallocs new packets. If the local stack is empty, first move all the return stack packets to the local stack.
Packet | pointer, or NULL on failure. |
Definition at line 167 of file tmqh-packetpool.c.
Referenced by FlowForceReassemblyPseudoPacketGet(), PacketGetFromQueueOrAlloc(), and TmqhInputPacketpool().
void PacketPoolInit | ( | void | ) |
Definition at line 284 of file tmqh-packetpool.c.
References max_pending_packets.
Referenced by PostRunDeinit().
void PacketPoolInitEmpty | ( | void | ) |
Definition at line 269 of file tmqh-packetpool.c.
void PacketPoolPostRunmodes | ( | void | ) |
Set the max_pending_return_packets value.
Set it to the max pending packets value, divided by the number of lister threads. Normally, in autofp these are the stream/detect/log worker threads.
The max_pending_return_packets value needs to stay below the packet pool size of the 'producers' (normally pkt capture threads but also flow timeout injection ) to avoid a deadlock where all the 'workers' keep packets in their return pools, while the capture thread can't continue because its pool is empty.
Definition at line 500 of file tmqh-packetpool.c.
References FatalError, max_pending_packets, RESERVED_PACKETS, TM_FLAG_DETECT_TM, and TmThreadCountThreadsByTmmFlags().
void PacketPoolReturnPacket | ( | Packet * | p | ) |
Return packet to Packet pool.
Definition at line 207 of file tmqh-packetpool.c.
Referenced by PacketFreeOrRelease(), and PacketGetFromQueueOrAlloc().
void PacketPoolWait | ( | void | ) |
Definition at line 69 of file tmqh-packetpool.c.
Referenced by FlowForceReassemblyPseudoPacketGet(), ReceiveErfFileLoop(), and ReceivePfringLoop().
void PacketPoolWaitForN | ( | int | n | ) |
Wait until we have the requested amount of packets in the pool.
In some cases waiting for packets is undesirable. Especially when a wait would happen under a lock of some kind, other parts of the engine could have to wait.
This function only returns when at least N packets are in our pool.
If counting in our pool's main stack didn't give us the number we are seeking, we check if the return stack is filled and add those to our main stack. Then we retry.
n | number of packets needed |
Definition at line 98 of file tmqh-packetpool.c.
__attribute__::SC_ATOMIC_DECLARE | ( | int | , |
sync_now | |||
) |
Packet* TmqhInputPacketpool | ( | ThreadVars * | ) |
Definition at line 351 of file tmqh-packetpool.c.
References PacketPoolGetPacket().
Referenced by TmqhPacketpoolRegister().
void TmqhOutputPacketpool | ( | ThreadVars * | , |
Packet * | |||
) |
Definition at line 356 of file tmqh-packetpool.c.
References Packet_::action, ACTION_DROP, BOOL2STR, IS_TUNNEL_PKT, IS_TUNNEL_PKT_VERDICTED, IS_TUNNEL_ROOT_PKT, lock, PACKET_PROFILING_END, PacketReleaseRefs(), Packet_::persistent, Packet_::pool, Packet_::ReleasePacket, Packet_::root, SCEnter, SCLogDebug, SCReturn, SCSpinlock, SCSpinLock, SCSpinUnlock, SET_TUNNEL_PKT_VERDICTED, TUNNEL_INCR_PKT_RTV_NOLOCK, Packet_::tunnel_lock, TUNNEL_PKT_RTV, and TUNNEL_PKT_TPR.
Referenced by TmqhPacketpoolRegister(), and TmqhReleasePacketsToPacketPool().
void TmqhPacketpoolRegister | ( | void | ) |
TmqhPacketpoolRegister \initonly.
Definition at line 53 of file tmqh-packetpool.c.
References Tmqh_::InHandler, Tmqh_::name, Tmqh_::OutHandler, TMQH_PACKETPOOL, tmqh_table, TmqhInputPacketpool(), and TmqhOutputPacketpool().
Referenced by TmqhSetup().
void TmqhReleasePacketsToPacketPool | ( | PacketQueue * | pq | ) |
Release all the packets in the queue back to the packetpool. Mainly used by threads that have failed, and wants to return the packets back to the packetpool.
pq | Pointer to the packetqueue from which the packets have to be returned back to the packetpool |
Definition at line 466 of file tmqh-packetpool.c.
References DEBUG_VALIDATE_BUG_ON, Packet_::flow, PacketDequeue(), and TmqhOutputPacketpool().
SCCondT cond |
Definition at line 2 of file tmqh-packetpool.h.
Packet* head |
Definition at line 4 of file tmqh-packetpool.h.
SCMutex mutex |
Definition at line 1 of file tmqh-packetpool.h.