]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
threading: TmSlot::SlotFunc does not need to be atomic
authorVictor Julien <victor@inliniac.net>
Sun, 3 Nov 2019 14:47:01 +0000 (15:47 +0100)
committerVictor Julien <victor@inliniac.net>
Fri, 7 Feb 2020 14:43:10 +0000 (15:43 +0100)
src/tm-threads.c
src/tm-threads.h

index 067f4267811ab24952906b6966123252ff34c407..7177b41622c206077b1140300cdd7901ca33f54c 100644 (file)
@@ -116,14 +116,13 @@ TmEcode TmThreadsSlotVarRun(ThreadVars *tv, Packet *p,
                                           TmSlot *slot)
 {
     for (TmSlot *s = slot; s != NULL; s = s->slot_next) {
-        TmSlotFunc SlotFunc = SC_ATOMIC_GET(s->SlotFunc);
         PACKET_PROFILING_TMM_START(p, s->tm_id);
 
         TmEcode r;
         if (unlikely(s->id == 0)) {
-            r = SlotFunc(tv, p, SC_ATOMIC_GET(s->slot_data), &s->slot_pre_pq, &s->slot_post_pq);
+            r = s->SlotFunc(tv, p, SC_ATOMIC_GET(s->slot_data), &s->slot_pre_pq, &s->slot_post_pq);
         } else {
-            r = SlotFunc(tv, p, SC_ATOMIC_GET(s->slot_data), &s->slot_pre_pq, NULL);
+            r = s->SlotFunc(tv, p, SC_ATOMIC_GET(s->slot_data), &s->slot_pre_pq, NULL);
         }
 
         PACKET_PROFILING_TMM_END(p, s->tm_id);
@@ -836,8 +835,7 @@ void TmSlotSetFuncAppend(ThreadVars *tv, TmModule *tm, const void *data)
     slot->tv = tv;
     slot->SlotThreadInit = tm->ThreadInit;
     slot->slot_initdata = data;
-    SC_ATOMIC_INIT(slot->SlotFunc);
-    (void)SC_ATOMIC_SET(slot->SlotFunc, tm->Func);
+    slot->SlotFunc = tm->Func;
     slot->PktAcqLoop = tm->PktAcqLoop;
     slot->Management = tm->Management;
     slot->SlotThreadExitPrintStats = tm->ThreadExitPrintStats;
index 3ad5b0e4ceeab007bdf143fd85583741c3be3206..5f8ff1d13b9a5cde8a392675569997812347acbe 100644 (file)
@@ -55,7 +55,7 @@ typedef struct TmSlot_ {
     ThreadVars *tv;
 
     /* function pointers */
-    SC_ATOMIC_DECLARE(TmSlotFunc, SlotFunc);
+    TmSlotFunc SlotFunc;
 
     TmEcode (*PktAcqLoop)(ThreadVars *, void *, void *);