packet pool: init pool for autofp workers as well

Introduce a new 'PacketPoolInitEmpty' as these pools will not often
need packets.

Also, don't double 'destroy' in the main thread.
pull/1416/merge
Victor Julien 12 years ago
parent 1884227019
commit deb98fab0c

@ -2474,7 +2474,6 @@ int main(int argc, char **argv)
if (suri.run_mode != RUNMODE_UNIX_SOCKET) { if (suri.run_mode != RUNMODE_UNIX_SOCKET) {
DefragDestroy(); DefragDestroy();
} }
PacketPoolDestroy();
MagicDeinit(); MagicDeinit();
TmqhCleanup(); TmqhCleanup();
TmModuleRunDeInit(); TmModuleRunDeInit();

@ -402,6 +402,8 @@ void *TmThreadsSlotVar(void *td)
char run = 1; char run = 1;
TmEcode r = TM_ECODE_OK; TmEcode r = TM_ECODE_OK;
PacketPoolInitEmpty();
/* Set the thread name */ /* Set the thread name */
if (SCSetThreadName(tv->name) < 0) { if (SCSetThreadName(tv->name) < 0) {
SCLogWarning(SC_ERR_THREAD_INIT, "Unable to set thread name"); SCLogWarning(SC_ERR_THREAD_INIT, "Unable to set thread name");
@ -524,6 +526,8 @@ void *TmThreadsSlotVar(void *td)
TmThreadsSetFlag(tv, THV_RUNNING_DONE); TmThreadsSetFlag(tv, THV_RUNNING_DONE);
TmThreadWaitForFlag(tv, THV_DEINIT); TmThreadWaitForFlag(tv, THV_DEINIT);
PacketPoolDestroy();
s = (TmSlot *)tv->tm_slots; s = (TmSlot *)tv->tm_slots;
for ( ; s != NULL; s = s->slot_next) { for ( ; s != NULL; s = s->slot_next) {

@ -279,6 +279,19 @@ void PacketPoolReturnPacket(Packet *p)
} }
} }
void PacketPoolInitEmpty(void)
{
#ifndef TLS
TmqhPacketPoolInit();
#endif
PktPool *my_pool = GetThreadPacketPool();
SCMutexInit(&my_pool->return_stack.mutex, NULL);
SCCondInit(&my_pool->return_stack.cond, NULL);
SC_ATOMIC_INIT(my_pool->return_stack.sync_now);
}
void PacketPoolInit(void) void PacketPoolInit(void)
{ {
extern intmax_t max_pending_packets; extern intmax_t max_pending_packets;

@ -71,6 +71,7 @@ Packet *PacketPoolGetPacket(void);
void PacketPoolWait(void); void PacketPoolWait(void);
void PacketPoolReturnPacket(Packet *p); void PacketPoolReturnPacket(Packet *p);
void PacketPoolInit(void); void PacketPoolInit(void);
void PacketPoolInitEmpty(void);
void PacketPoolDestroy(void); void PacketPoolDestroy(void);
#endif /* __TMQH_PACKETPOOL_H__ */ #endif /* __TMQH_PACKETPOOL_H__ */

Loading…
Cancel
Save