diff --git a/src/util-affinity.c b/src/util-affinity.c index 69f9d89886..bf75d794e9 100644 --- a/src/util-affinity.c +++ b/src/util-affinity.c @@ -243,20 +243,27 @@ void AffinitySetupLoadFromConfig() } node = ConfNodeLookupChild(affinity->head.tqh_first, "prio"); - if (node == NULL) - continue; - if (!strcmp(node->val, "low")) { - taf->prio = PRIO_LOW; - } else if (!strcmp(node->val, "medium")) { - taf->prio = PRIO_MEDIUM; - } else if (!strcmp(node->val, "high")) { - taf->prio = PRIO_HIGH; - } else { - SCLogError(SC_ERR_INVALID_ARGUMENT, "unknown cpu_affinity prio"); - exit(EXIT_FAILURE); + if (node != NULL) { + if (!strcmp(node->val, "low")) { + taf->prio = PRIO_LOW; + } else if (!strcmp(node->val, "medium")) { + taf->prio = PRIO_MEDIUM; + } else if (!strcmp(node->val, "high")) { + taf->prio = PRIO_HIGH; + } else { + SCLogError(SC_ERR_INVALID_ARGUMENT, "unknown cpu_affinity prio"); + exit(EXIT_FAILURE); + } } - + node = ConfNodeLookupChild(affinity->head.tqh_first, "threads"); + if (node != NULL) { + taf->nb_threads = atoi(node->val); + if (! taf->nb_threads) { + SCLogError(SC_ERR_INVALID_ARGUMENT, "bad value for threads count"); + exit(EXIT_FAILURE); + } + } } } diff --git a/src/util-affinity.h b/src/util-affinity.h index df970b3f8a..90c7eb2bd4 100644 --- a/src/util-affinity.h +++ b/src/util-affinity.h @@ -48,6 +48,7 @@ typedef struct ThreadsAffinityType_ { cpu_set_t cpu_set; uint8_t mode_flag; uint8_t prio; + int nb_threads; cpu_set_t lowprio_cpu; cpu_set_t medprio_cpu; cpu_set_t hiprio_cpu;