]> git.ipfire.org Git - people/ms/suricata.git/commitdiff
introduce SCPerfSyncCounters/SCPerfSyncCounters macro to synchronize counters
authorAnoop Saldanha <poonaatsoc@gmail.com>
Fri, 14 Oct 2011 17:46:35 +0000 (23:16 +0530)
committerVictor Julien <victor@inliniac.net>
Mon, 17 Oct 2011 12:17:34 +0000 (14:17 +0200)
12 files changed:
src/app-layer-detect-proto.c
src/counters.h
src/cuda-packet-batcher.c
src/flow-manager.c
src/source-af-packet.c
src/source-pcap-file.c
src/source-pcap.c
src/source-pfring.c
src/tm-threads.c
src/tmqh-flow.c
src/tmqh-ringbuffer.c
src/tmqh-simple.c

index ab9f5a06ad2a73a62219abd09b14537fbae0f5f8..d884ee1603e74a3332918515853e9b23b550e0d5 100644 (file)
@@ -691,7 +691,7 @@ void *AppLayerDetectProtoThread(void *td)
         }
 
         if (TmThreadsCheckFlag(tv, THV_KILL)) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+            SCPerfSyncCounters(tv, 0);
             run = 0;
         }
     }
index 4133f48c22c0835208e528ffdb7e2aea6b72c935..a46f8c7bc5c16fb58acb6976466408438fd80518 100644 (file)
@@ -215,7 +215,6 @@ typedef struct SCPerfOPIfaceContext_ {
     SCMutex pctmi_lock;
 } SCPerfOPIfaceContext;
 
-
 /* the initialization functions */
 void SCPerfInitCounterApi(void);
 void SCPerfSpawnThreads(void);
@@ -260,4 +259,14 @@ void SCPerfRegisterTests(void);
 void SCPerfCounterAddUI64(uint16_t, SCPerfCounterArray *, uint64_t);
 void SCPerfCounterAddDouble(uint16_t, SCPerfCounterArray *, double);
 
+#define SCPerfSyncCounters(tv, reset_lc) \
+    SCPerfUpdateCounterArray((tv)->sc_perf_pca, &(tv)->sc_perf_pctx, (reset_lc)); \
+
+#define SCPerfSyncCountersIfSignalled(tv, reset_lc)                        \
+    do {                                                        \
+        if ((tv)->sc_perf_pctx.perf_flag == 1) {                            \
+            SCPerfUpdateCounterArray((tv)->sc_perf_pca, &(tv)->sc_perf_pctx, (reset_lc)); \
+        }                                                               \
+    } while (0)
+
 #endif /* __COUNTERS_H__ */
index 67d17e91e85441943fa3de5abdb0bd6b306adec2..2fd8256af9545940f6d4bf31b7ac411a044ec4d4 100644 (file)
@@ -367,7 +367,7 @@ void *SCCudaPBTmThreadsSlot1(void *td)
         }
 
         if (TmThreadsCheckFlag(tv, THV_KILL)) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+            SCPerfSyncCounters(tv, 0);
             run = 0;
         }
     }
index bcabdb2676e791a1d2967f0f3685b6686f7f64ba..ead1dcdc98b96cf820c79273802b33cd70eb31e4 100644 (file)
@@ -219,7 +219,7 @@ void *FlowManagerThread(void *td)
         }
 
         if (TmThreadsCheckFlag(th_v, THV_KILL)) {
-            SCPerfUpdateCounterArray(th_v->sc_perf_pca, &th_v->sc_perf_pctx, 0);
+            SCPerfSyncCounters(th_v, 0);
             break;
         }
 
index 6af2951db4d719f35c867e86c14468044c1dce4c..e5d9b957ca170a618120df3b900c8134b84d9b27 100644 (file)
@@ -390,10 +390,7 @@ TmEcode ReceiveAFPLoop(ThreadVars *tv, void *data, void *slot)
             ptv->afp_state = AFP_STATE_DOWN;
             continue;
         }
-
-        if (tv->sc_perf_pctx.perf_flag == 1) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
-        }
+        SCPerfSyncCountersIfSignalled(tv, 0);
     }
 
     if (suricata_ctl_flags & SURICATA_STOP ||
index b8141442e10eebe892a63b9639fd1baadb507bd9..fa9dc05830a6b6ff02153c7cdadbde84e79e40cf 100644 (file)
@@ -183,9 +183,7 @@ TmEcode ReceivePcapFileLoop(ThreadVars *tv, void *data, void *slot) {
             EngineStop();
             break;
         }
-        if (tv->sc_perf_pctx.perf_flag == 1) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
-        }
+        SCPerfSyncCountersIfSignalled(tv, 0);
     }
 
     SCReturnInt(TM_ECODE_OK);
index 82e5cb9cac5b9287efac2171296160a98a3a3801..f1344a0b2841bf9cd5964574ad1df01e6bc1d4c3 100644 (file)
@@ -264,10 +264,7 @@ TmEcode ReceivePcapLoop(ThreadVars *tv, void *data, void *slot)
                 break;
             }
         }
-
-        if (tv->sc_perf_pctx.perf_flag == 1) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
-        }
+        SCPerfSyncCountersIfSignalled(tv, 0);
     }
 
     SCReturnInt(TM_ECODE_OK);
index bd18fe9ff7891149a958ab3c801b313c52f710c1..4c2edfcb3f55a355d12dd3543b566efecb9c797c 100644 (file)
@@ -249,10 +249,7 @@ TmEcode ReceivePfringLoop(ThreadVars *tv, void *data, void *slot)
             TmqhOutputPacketpool(ptv->tv, p);
             return TM_ECODE_FAILED;
         }
-
-        if (tv->sc_perf_pctx.perf_flag == 1) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
-        }
+        SCPerfSyncCountersIfSignalled(tv, 0);
     }
 
     return TM_ECODE_OK;
index bd6fc171ddf8605a58334b12bd28baeddfad081a..7ab3964e9e12ee77ae643eca9a9e116511460218 100644 (file)
@@ -172,7 +172,7 @@ void *TmThreadsSlot1NoIn(void *td)
         }
 
         if (TmThreadsCheckFlag(tv, THV_KILL)) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+            SCPerfSyncCounters(tv, 0);
             run = 0;
         }
     } /* while (run) */
@@ -244,7 +244,7 @@ void *TmThreadsSlot1NoOut(void *td)
         }
 
         if (TmThreadsCheckFlag(tv, THV_KILL)) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+            SCPerfSyncCounters(tv, 0);
             run = 0;
         }
     } /* while (run) */
@@ -311,7 +311,7 @@ void *TmThreadsSlot1NoInOut(void *td)
         }
 
         if (TmThreadsCheckFlag(tv, THV_KILL)) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+            SCPerfSyncCounters(tv, 0);
             run = 0;
         }
     } /* while (run) */
@@ -413,7 +413,7 @@ void *TmThreadsSlot1(void *td)
         }
 
         if (TmThreadsCheckFlag(tv, THV_KILL)) {
-            SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+            SCPerfSyncCounters(tv, 0);
             run = 0;
         }
     } /* while (run) */
@@ -571,7 +571,7 @@ void *TmThreadsSlotPktAcqLoop(void *td) {
             run = 0;
         }
     }
-    SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+    SCPerfSyncCounters(tv, 0);
 
     TmThreadWaitForFlag(tv, THV_DEINIT);
 
@@ -693,7 +693,7 @@ void *TmThreadsSlotVar(void *td)
             run = 0;
         }
     } /* while (run) */
-    SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+    SCPerfSyncCounters(tv, 0);
 
     TmThreadWaitForFlag(tv, THV_DEINIT);
 
index 036bf29c4417ab9627adaac713c880f8bc2ed2ee..1bf208d6d717f3e2b795ea98222bf38f5340ebda 100644 (file)
@@ -73,8 +73,7 @@ Packet *TmqhInputFlow(ThreadVars *tv)
         SCCondWait(&q->cond_q, &q->mutex_q);
     }
 
-    if (tv->sc_perf_pctx.perf_flag == 1)
-        SCPerfUpdateCounterArray(tv->sc_perf_pca, &tv->sc_perf_pctx, 0);
+    SCPerfSyncCountersIfSignalled(tv, 0);
 
     if (q->len > 0) {
         Packet *p = PacketDequeue(q);
index e2d790454c9e6dda85f275ddc4241e5eb50df2b4..6008ac28e207a44ce502943973e8bf20a172c823 100644 (file)
@@ -94,8 +94,7 @@ Packet *TmqhInputRingBufferMrSw(ThreadVars *t)
 
     Packet *p = (Packet *)RingBufferMrSw8Get(rb);
 
-    if (t->sc_perf_pctx.perf_flag == 1)
-        SCPerfUpdateCounterArray(t->sc_perf_pca, &t->sc_perf_pctx, 0);
+    SCPerfSyncCountersIfSignalled(t, 0);
 
     return p;
 }
@@ -112,8 +111,7 @@ Packet *TmqhInputRingBufferSrSw(ThreadVars *t)
 
     Packet *p = (Packet *)RingBufferSrSw8Get(rb);
 
-    if (t->sc_perf_pctx.perf_flag == 1)
-        SCPerfUpdateCounterArray(t->sc_perf_pca, &t->sc_perf_pctx, 0);
+    SCPerfSyncCountersIfSignalled(t, 0);
 
     return p;
 }
@@ -130,8 +128,7 @@ Packet *TmqhInputRingBufferSrMw(ThreadVars *t)
 
     Packet *p = (Packet *)RingBufferSrMw8Get(rb);
 
-    if (t->sc_perf_pctx.perf_flag == 1)
-        SCPerfUpdateCounterArray(t->sc_perf_pca, &t->sc_perf_pctx, 0);
+    SCPerfSyncCountersIfSignalled(t, 0);
 
     return p;
 }
index fee8069dafcd87d42c20fd0391230b48e715f9b9..53277dbc677dd7c92d3ff842cc9f92d021203e83 100644 (file)
@@ -53,8 +53,7 @@ Packet *TmqhInputSimple(ThreadVars *t)
         SCCondWait(&q->cond_q, &q->mutex_q);
     }
 
-    if (t->sc_perf_pctx.perf_flag == 1)
-        SCPerfUpdateCounterArray(t->sc_perf_pca, &t->sc_perf_pctx, 0);
+    SCPerfSyncCountersIfSignalled(t, 0);
 
     if (q->len > 0) {
         Packet *p = PacketDequeue(q);