Go to the documentation of this file.
24 #ifndef SURICATA_UTIL_AFFINITY_H
25 #define SURICATA_UTIL_AFFINITY_H
35 #if defined OS_FREEBSD
37 #include <sys/param.h>
38 #include <sys/resource.h>
39 #include <sys/cpuset.h>
41 #define cpu_set_t cpuset_t
42 #elif defined __OpenBSD__
44 #include <sys/param.h>
45 #include <sys/resource.h>
46 #elif defined OS_DARWIN
47 #include <mach/mach.h>
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);
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 lcpu[MAX_NUMA_NODES]
ThreadsAffinityType * GetOrAllocAffinityTypeForIfaceOfName(const char *name, const char *interface_name)
Finds affinity by its name and interface name. Interfaces are children of cpu-set names....
struct ThreadsAffinityType_ ThreadsAffinityType
uint16_t AffinityGetNextCPU(ThreadVars *tv, ThreadsAffinityType *taf)
void ThreadingAffinityRegisterTests(void)
Register all threading affinity unit tests.
Per thread variable structure.
ThreadsAffinityType thread_affinity[MAX_CPU_SET]
ThreadsAffinityType * GetAffinityTypeForNameAndIface(const char *name, const char *interface_name)
Find affinity by name (*-cpu-set name) and an interface name.
int BuildCpusetWithCallback(const char *name, SCConfNode *node, void(*Callback)(int i, void *data), void *data)
struct ThreadsAffinityType_ * parent
struct ThreadsAffinityType_ ** children
void TopologyDestroy(void)
void AffinitySetupLoadFromConfig(void)
Extract CPU affinity configuration from current config file.
uint32_t nb_children_capacity
char * AffinityGetYamlPath(ThreadsAffinityType *taf)
Get the YAML path for the given affinity type. The path is built using the parent name (if available)...