24#ifndef SURICATA_UTIL_AFFINITY_H
25#define SURICATA_UTIL_AFFINITY_H
38#include <sys/resource.h>
39#include <sys/cpuset.h>
41#define cpu_set_t cpuset_t
42#elif defined __OpenBSD__
45#include <sys/resource.h>
46#elif defined OS_DARWIN
48#include <mach/mach_init.h>
49#include <mach/thread_policy.h>
50#define cpu_set_t thread_affinity_policy_data_t
51#define CPU_SET(cpu_id, new_mask) (*(new_mask)).affinity_tag = (cpu_id + 1)
52#define CPU_ISSET(cpu_id, new_mask) ((*(new_mask)).affinity_tag == (cpu_id + 1))
53#define CPU_ZERO(new_mask) (*(new_mask)).affinity_tag = THREAD_AFFINITY_TAG_NULL
70#define MAX_NUMA_NODES 16
78#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined sun
95#ifndef _THREAD_AFFINITY
102 const char *
name,
const char *interface_name);
116 const char *
name,
SCConfNode *node,
void (*Callback)(
int i,
void *data),
void *data);
Per thread variable structure.
struct ThreadsAffinityType_ * parent
uint32_t nb_children_capacity
struct ThreadsAffinityType_ ** children
uint16_t lcpu[MAX_NUMA_NODES]
void TopologyDestroy(void)
void ThreadingAffinityRegisterTests(void)
Register all threading affinity unit tests.
struct ThreadsAffinityType_ ThreadsAffinityType
ThreadsAffinityType thread_affinity[MAX_CPU_SET]
char * AffinityGetYamlPath(ThreadsAffinityType *taf)
Get the YAML path for the given affinity type. The path is built using the parent name (if available)...
int BuildCpusetWithCallback(const char *name, SCConfNode *node, void(*Callback)(int i, void *data), void *data)
ThreadsAffinityType * GetAffinityTypeForNameAndIface(const char *name, const char *interface_name)
Find affinity by name (*-cpu-set name) and an interface name.
uint16_t UtilAffinityGetAffinedCPUNum(ThreadsAffinityType *taf)
Return the total number of CPUs in a given affinity.
ThreadsAffinityType * FindAffinityByInterface(ThreadsAffinityType *parent, const char *interface_name)
uint16_t AffinityGetNextCPU(ThreadVars *tv, ThreadsAffinityType *taf)
ThreadsAffinityType * GetOrAllocAffinityTypeForIfaceOfName(const char *name, const char *interface_name)
Finds affinity by its name and interface name. Interfaces are children of cpu-set names....
void AffinitySetupLoadFromConfig(void)
Extract CPU affinity configuration from current config file.