--- suricata-1.4.3/src/util-affinity.h.orig Sat Jul 6 15:30:10 2013 +++ suricata-1.4.3/src/util-affinity.h Sat Jul 6 15:30:49 2013 @@ -66,13 +66,13 @@ 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 @@ -99,7 +99,7 @@ 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; @@ -181,7 +181,7 @@ break; } } -#endif /* OS_WIN32 and __OpenBSD__ */ +#endif /* OS_WIN32 and __OpenBSD__ and __sun */ /** * \brief Extract cpu affinity configuration from current config file @@ -189,7 +189,7 @@ 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; @@ -287,7 +287,7 @@ } } } -#endif /* OS_WIN32 and __OpenBSD__ */ +#endif /* OS_WIN32 and __OpenBSD__ and __sun */ } /** @@ -298,7 +298,7 @@ { 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; @@ -317,6 +317,6 @@ 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 @@ -25,6 +25,10 @@ * Thread management functions. */ +#if defined(__sun) +#include +#endif + #include "suricata-common.h" #include "suricata.h" #include "stream.h" @@ -1119,7 +1123,7 @@ 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, @@ -1152,7 +1156,7 @@ */ static int SetCPUAffinity(uint16_t cpuid) { -#if defined __OpenBSD__ +#if defined __OpenBSD__ || defined __sun return 0; #else int cpu = (int)cpuid; @@ -1281,11 +1285,15 @@ 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) {