From 2fe77bf65eb2456d6ccc247ca87bc9b7f473e9d0 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 2 Jun 2010 13:32:12 +0200 Subject: [PATCH] Use ringbuffers in the pcap live auto runmode as well. --- src/runmodes.c | 12 ++++++------ src/util-ringbuffer.c | 22 ++++++++++++---------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/runmodes.c b/src/runmodes.c index 75372f0801..b92f6ed383 100644 --- a/src/runmodes.c +++ b/src/runmodes.c @@ -1900,7 +1900,7 @@ int RunModeIdsPcapAuto(DetectEngineCtx *de_ctx, char *iface) { TimeModeSetLive(); /* create the threads */ - ThreadVars *tv_receivepcap = TmThreadCreatePacketHandler("ReceivePcap","packetpool","packetpool","pickup-queue","simple","1slot"); + ThreadVars *tv_receivepcap = TmThreadCreatePacketHandler("ReceivePcap","packetpool","packetpool","pickup-queue","ringbuffer","1slot"); if (tv_receivepcap == NULL) { printf("ERROR: TmThreadsCreate failed\n"); exit(EXIT_FAILURE); @@ -1921,7 +1921,7 @@ int RunModeIdsPcapAuto(DetectEngineCtx *de_ctx, char *iface) { exit(EXIT_FAILURE); } - ThreadVars *tv_decode1 = TmThreadCreatePacketHandler("Decode1","pickup-queue","simple","decode-queue1","simple","1slot"); + ThreadVars *tv_decode1 = TmThreadCreatePacketHandler("Decode1","pickup-queue","ringbuffer","decode-queue1","ringbuffer","1slot"); if (tv_decode1 == NULL) { printf("ERROR: TmThreadsCreate failed for Decode1\n"); exit(EXIT_FAILURE); @@ -1942,7 +1942,7 @@ int RunModeIdsPcapAuto(DetectEngineCtx *de_ctx, char *iface) { exit(EXIT_FAILURE); } - ThreadVars *tv_stream1 = TmThreadCreatePacketHandler("Stream1","decode-queue1","simple","stream-queue1","simple","1slot"); + ThreadVars *tv_stream1 = TmThreadCreatePacketHandler("Stream1","decode-queue1","ringbuffer","stream-queue1","ringbuffer","1slot"); if (tv_stream1 == NULL) { printf("ERROR: TmThreadsCreate failed for Stream1\n"); exit(EXIT_FAILURE); @@ -1971,7 +1971,7 @@ int RunModeIdsPcapAuto(DetectEngineCtx *de_ctx, char *iface) { char *thread_name = SCStrdup(tname); SCLogDebug("Assigning %s affinity to cpu %u", thread_name, cpu); - ThreadVars *tv_detect_ncpu = TmThreadCreatePacketHandler(thread_name,"stream-queue1","simple","verdict-queue","simple","1slot"); + ThreadVars *tv_detect_ncpu = TmThreadCreatePacketHandler(thread_name,"stream-queue1","ringbuffer","verdict-queue","ringbuffer","1slot"); if (tv_detect_ncpu == NULL) { printf("ERROR: TmThreadsCreate failed\n"); exit(EXIT_FAILURE); @@ -2001,7 +2001,7 @@ int RunModeIdsPcapAuto(DetectEngineCtx *de_ctx, char *iface) { } } - ThreadVars *tv_rreject = TmThreadCreatePacketHandler("RespondReject","verdict-queue","simple","alert-queue","simple","1slot"); + ThreadVars *tv_rreject = TmThreadCreatePacketHandler("RespondReject","verdict-queue","ringbuffer","alert-queue","ringbuffer","1slot"); if (tv_rreject == NULL) { printf("ERROR: TmThreadsCreate failed\n"); exit(EXIT_FAILURE); @@ -2023,7 +2023,7 @@ int RunModeIdsPcapAuto(DetectEngineCtx *de_ctx, char *iface) { } ThreadVars *tv_outputs = TmThreadCreatePacketHandler("Outputs", - "alert-queue", "simple", "packetpool", "packetpool", "varslot"); + "alert-queue", "ringbuffer", "packetpool", "packetpool", "varslot"); SetupOutputs(tv_outputs); TmThreadSetCPUAffinity(tv_outputs, 0); diff --git a/src/util-ringbuffer.c b/src/util-ringbuffer.c index 8bae394dd7..45d968b2fe 100644 --- a/src/util-ringbuffer.c +++ b/src/util-ringbuffer.c @@ -2,6 +2,8 @@ #include "suricata.h" #include "util-ringbuffer.h" +#define USLEEP_TIME 5 + /* Multi Reader, Single Writer, 8 bits */ RingBufferMrSw8 *RingBufferMrSw8Init(void) { @@ -42,7 +44,7 @@ retry: if (rb->shutdown != 0) return NULL; - usleep(1); + usleep(USLEEP_TIME); } /* atomically update rb->read */ @@ -73,7 +75,7 @@ int RingBufferMrSw8Put(RingBufferMrSw8 *rb, void *ptr) { if (rb->shutdown != 0) return -1; - usleep(1); + usleep(USLEEP_TIME); } rb->array[rb->write] = ptr; @@ -121,7 +123,7 @@ retry: if (rb->shutdown != 0) return NULL; - usleep(1); + usleep(USLEEP_TIME); } /* atomically update rb->read */ @@ -152,7 +154,7 @@ int RingBufferMrSwPut(RingBufferMrSw *rb, void *ptr) { if (rb->shutdown != 0) return -1; - usleep(1); + usleep(USLEEP_TIME); } rb->array[rb->write] = ptr; @@ -188,7 +190,7 @@ void *RingBufferSrSwGet(RingBufferSrSw *rb) { if (rb->shutdown != 0) return NULL; - usleep(1); + usleep(USLEEP_TIME); } ptr = rb->array[rb->read]; @@ -204,7 +206,7 @@ int RingBufferSrSwPut(RingBufferSrSw *rb, void *ptr) { if (rb->shutdown != 0) return -1; - usleep(1); + usleep(USLEEP_TIME); } rb->array[rb->write] = ptr; @@ -255,7 +257,7 @@ retry: if (rb->shutdown != 0) return NULL; - usleep(1); + usleep(USLEEP_TIME); } /* atomically update rb->read */ @@ -302,7 +304,7 @@ retry: if (rb->shutdown != 0) return -1; - usleep(1); + usleep(USLEEP_TIME); } /* get our lock */ @@ -366,7 +368,7 @@ retry: if (rb->shutdown != 0) return NULL; - usleep(1); + usleep(USLEEP_TIME); } /* atomically update rb->read */ @@ -413,7 +415,7 @@ retry: if (rb->shutdown != 0) return -1; - usleep(1); + usleep(USLEEP_TIME); } /* get our lock */