]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
util-affinity: export CPU set parsing function
authorEric Leblond <eric@regit.org>
Sat, 6 Jan 2018 08:44:00 +0000 (09:44 +0100)
committerEric Leblond <eric@regit.org>
Tue, 6 Feb 2018 15:58:19 +0000 (16:58 +0100)
src/util-affinity.c
src/util-affinity.h

index 88614a3f702b68b67f11c3ee1bce6e7a841b1e3a..d78c509fbb4423e4734cf2a73040b40a575bcfea 100644 (file)
@@ -95,7 +95,9 @@ static void AffinitySetupInit(void)
     return;
 }
 
-static void BuildCpuset(const char *name, ConfNode *node, cpu_set_t *cpu)
+void BuildCpusetWithCallback(const char *name, ConfNode *node,
+                             void (*Callback)(int i, void * data),
+                             void *data)
 {
     ConfNode *lnode;
     TAILQ_FOREACH(lnode, &node->head, next) {
@@ -152,12 +154,22 @@ static void BuildCpuset(const char *name, ConfNode *node, cpu_set_t *cpu)
             b = a;
         }
         for (i = a; i<= b; i++) {
-            CPU_SET(i, cpu);
+            Callback(i, data);
         }
         if (stop)
             break;
     }
 }
+
+static void AffinityCallback(int i, void *data)
+{
+    CPU_SET(i, (cpu_set_t *)data);
+}
+
+static void BuildCpuset(const char *name, ConfNode *node, cpu_set_t *cpu)
+{
+    BuildCpusetWithCallback(name, node, AffinityCallback, (void *) cpu);
+}
 #endif /* OS_WIN32 and __OpenBSD__ */
 
 /**
index 7e846f4a2d8d28bf95169b293d720b0a861b9aca..bee8a4f828116fe0aed41e04db125e353563a6b6 100644 (file)
@@ -24,6 +24,7 @@
 #ifndef __UTIL_AFFINITY_H__
 #define __UTIL_AFFINITY_H__
 #include "suricata-common.h"
+#include "conf.h"
 
 #if defined OS_FREEBSD
 #include <sched.h>
@@ -86,4 +87,8 @@ ThreadsAffinityType * GetAffinityTypeFromName(const char *name);
 
 int AffinityGetNextCPU(ThreadsAffinityType *taf);
 
+void BuildCpusetWithCallback(const char *name, ConfNode *node,
+                             void (*Callback)(int i, void * data),
+                             void *data);
+
 #endif /* __UTIL_AFFINITY_H__ */