Bug #852 ยป cpu_sets.diff
suricata-1.4.3/src/util-affinity.h Sat Jul 6 15:30:49 2013 | ||
---|---|---|
typedef struct ThreadsAffinityType_ {
|
||
char *name;
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
cpu_set_t cpu_set;
|
||
#endif
|
||
uint8_t mode_flag;
|
||
int prio;
|
||
int nb_threads;
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
cpu_set_t lowprio_cpu;
|
||
cpu_set_t medprio_cpu;
|
||
cpu_set_t hiprio_cpu;
|
||
-- suricata-1.4.3/src/util-affinity.c.orig Tue Jul 9 13:05:13 2013
|
||
++ suricata-1.4.3/src/util-affinity.c Tue Jul 9 13:08:23 2013
|
||
... | ... | |
return NULL;
|
||
}
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined(__sun)
|
||
static void AffinitySetupInit()
|
||
{
|
||
int i, j;
|
||
... | ... | |
break;
|
||
}
|
||
}
|
||
#endif /* OS_WIN32 and __OpenBSD__ */
|
||
#endif /* OS_WIN32 and __OpenBSD__ and __sun */
|
||
/**
|
||
* \brief Extract cpu affinity configuration from current config file
|
||
... | ... | |
void AffinitySetupLoadFromConfig()
|
||
{
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined(__sun)
|
||
ConfNode *root = ConfGetNode("threading.cpu-affinity");
|
||
ConfNode *affinity;
|
||
... | ... | |
}
|
||
}
|
||
}
|
||
#endif /* OS_WIN32 and __OpenBSD__ */
|
||
#endif /* OS_WIN32 and __OpenBSD__ and __sun */
|
||
}
|
||
/**
|
||
... | ... | |
{
|
||
int ncpu = 0;
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined(__sun)
|
||
int iter = 0;
|
||
SCMutexLock(&taf->taf_mutex);
|
||
ncpu = taf->lcpu;
|
||
... | ... | |
taf->lcpu = 0;
|
||
SCMutexUnlock(&taf->taf_mutex);
|
||
SCLogInfo("Setting affinity on CPU %d", ncpu);
|
||
#endif /* OS_WIN32 and __OpenBSD__ */
|
||
#endif /* OS_WIN32 and __OpenBSD__ and __sun */
|
||
return ncpu;
|
||
}
|
||
-- suricata-1.4.3/src/tm-threads.c.orig Mon Jul 8 15:45:34 2013
|
||
++ suricata-1.4.3/src/tm-threads.c Mon Jul 8 15:50:00 2013
|
||
... | ... | |
* Thread management functions.
|
||
*/
|
||
#if defined(__sun)
|
||
#include <pthread.h>
|
||
#endif
|
||
#include "suricata-common.h"
|
||
#include "suricata.h"
|
||
#include "stream.h"
|
||
... | ... | |
return NULL;
|
||
}
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
static int SetCPUAffinitySet(cpu_set_t *cs) {
|
||
#if defined OS_FREEBSD
|
||
int r = cpuset_setaffinity(CPU_LEVEL_WHICH, CPU_WHICH_TID,
|
||
... | ... | |
*/
|
||
static int SetCPUAffinity(uint16_t cpuid)
|
||
{
|
||
#if defined __OpenBSD__
|
||
#if defined __OpenBSD__ || defined __sun
|
||
return 0;
|
||
#else
|
||
int cpu = (int)cpuid;
|
||
... | ... | |
if (tv->thread_setup_flags & THREAD_SET_AFFINITY) {
|
||
SCLogInfo("Setting affinity for \"%s\" Module to cpu/core "
|
||
"%"PRIu16", thread id %lu", tv->name, tv->cpu_affinity,
|
||
#if defined(__sun)
|
||
pthread_self());
|
||
#else
|
||
SCGetThreadIdLong());
|
||
#endif
|
||
SetCPUAffinity(tv->cpu_affinity);
|
||
}
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__
|
||
#if !defined __CYGWIN__ && !defined OS_WIN32 && !defined __OpenBSD__ && !defined __sun
|
||
if (tv->thread_setup_flags & THREAD_SET_PRIORITY)
|
||
TmThreadSetPrio(tv);
|
||
if (tv->thread_setup_flags & THREAD_SET_AFFTYPE) {
|