From ac5957d4615c45e4de67f99cac571904dd2f6dd3 Mon Sep 17 00:00:00 2001 From: Eric Leblond Date: Sat, 6 Jan 2018 09:44:00 +0100 Subject: [PATCH] util-affinity: export CPU set parsing function --- src/util-affinity.c | 16 ++++++++++++++-- src/util-affinity.h | 5 +++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/src/util-affinity.c b/src/util-affinity.c index 88614a3f70..d78c509fbb 100644 --- a/src/util-affinity.c +++ b/src/util-affinity.c @@ -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__ */ /** diff --git a/src/util-affinity.h b/src/util-affinity.h index 7e846f4a2d..bee8a4f828 100644 --- a/src/util-affinity.h +++ b/src/util-affinity.h @@ -24,6 +24,7 @@ #ifndef __UTIL_AFFINITY_H__ #define __UTIL_AFFINITY_H__ #include "suricata-common.h" +#include "conf.h" #if defined OS_FREEBSD #include @@ -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__ */