Compilation fix for OpenBSD and win32.

This patch fixes compilation on OpenBSD platform. It is running
fine on a pcap file. The patch should also fix compilation on
WIN32 platform but this is not tested.
remotes/origin/master-1.1.x
Eric Leblond 14 years ago committed by Victor Julien
parent a8db8b334b
commit 4e9231266a

@ -123,6 +123,11 @@ AC_INIT(configure.in)
CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/local/include/libnet11"
LDFLAGS="${LDFLAGS} -L/usr/local/lib -L/usr/local/lib/libnet11"
;;
*-*-openbsd*)
CFLAGS="${CFLAGS} -D__OpenBSD__"
CPPFLAGS="${CPPFLAGS} -I/usr/local/include -I/usr/local/include/libnet-1.1"
LDFLAGS="${LDFLAGS} -L/usr/local/lib -I/usr/local/lib/libnet-1.1"
;;
*darwin*|*Darwin*)
CFLAGS="${CFLAGS} -DOS_DARWIN"
CPPFLAGS="${CPPFLAGS} -I/opt/local/include"

@ -97,14 +97,14 @@
#include <sys/stat.h>
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#if HAVE_NETINET_IN_H
#include <netinet/in.h>
#endif
#if HAVE_ARPA_INET_H
#include <arpa/inet.h>
#endif
#if HAVE_NETDB_H
#include <netdb.h>
#endif

@ -27,9 +27,11 @@
#ifndef __THREADS_H__
#define __THREADS_H__
#ifdef OS_FREEBSD
#if defined OS_FREEBSD || __OpenBSD__
#if ! defined __OpenBSD__
#include <sys/thr.h>
#endif
enum {
PRIO_LOW = 2,
PRIO_MEDIUM = 0,
@ -99,6 +101,13 @@ enum {
u_long tid = (u_long)tmpthid; \
tid; \
})
#elif __OpenBSD__
#define SCGetThreadIdLong(...) ({ \
pid_t tpid; \
tpid = getpid(); \
u_long tid = (u_long)tpid; \
tid; \
})
#elif OS_WIN32
#define SCGetThreadIdLong(...) ({ \
u_long tid = (u_long)GetCurrentThreadId(); \
@ -361,7 +370,7 @@ enum {
*/
#ifndef PR_SET_NAME /*PR_SET_NAME */
#define SCSetThreadName(n)
#elif OS_FREEBSD /* FreeBSD */
#elif defined OS_FREEBSD || __OpenBSD__ /* FreeBSD or OpenBSD */
/** \todo Add implementation for FreeBSD */
#define SCSetThreadName(n)
#elif OS_WIN32 /* Windows */

@ -664,13 +664,9 @@ void TmVarSlotSetFuncAppend(ThreadVars *tv, TmModule *tm, void *data) {
}
}
#ifdef OS_WIN32
static int SetCPUAffinitySet(uint32_t cs) {
return 0;
}
#else
#if !defined OS_WIN32 && !defined __OpenBSD__
static int SetCPUAffinitySet(cpu_set_t *cs) {
#ifdef OS_FREEBSD
#if defined OS_FREEBSD
int r = cpuset_setaffinity(CPU_LEVEL_WHICH,CPU_WHICH_TID,SCGetThreadIdLong(),sizeof(cpu_set_t),cs);
#elif OS_DARWIN
int r = thread_policy_set(mach_thread_self(), THREAD_AFFINITY_POLICY, (void*)cs, THREAD_AFFINITY_POLICY_COUNT);
@ -696,11 +692,14 @@ static int SetCPUAffinitySet(cpu_set_t *cs) {
* \retval 0 if all goes well; -1 if something is wrong
*/
static int SetCPUAffinity(uint16_t cpuid) {
#if !defined __OpenBSD__
int cpu = (int)cpuid;
#endif
#ifdef OS_WIN32
DWORD cs = 1 << cpu;
#elif defined __OpenBSD__
return 0;
#else
cpu_set_t cs;
@ -717,7 +716,7 @@ static int SetCPUAffinity(uint16_t cpuid) {
SCLogDebug("CPU Affinity for thread %lu set to CPU %" PRId32, SCGetThreadIdLong(), cpu);
return 0;
#else
#elif !defined __OpenBSD__
return SetCPUAffinitySet(&cs);
#endif /* OS_WIN32 */
}
@ -802,6 +801,7 @@ TmEcode TmThreadSetupOptions(ThreadVars *tv) {
SCLogInfo("Setting affinity for \"%s\" Module to cpu/core %"PRIu16", thread id %lu", tv->name, tv->cpu_affinity, SCGetThreadIdLong());
SetCPUAffinity(tv->cpu_affinity);
}
#if !defined OS_WIN32 && !defined __OpenBSD__
if (tv->thread_setup_flags & THREAD_SET_PRIORITY)
TmThreadSetPrio(tv);
if (tv->thread_setup_flags & THREAD_SET_AFFTYPE) {
@ -827,6 +827,7 @@ TmEcode TmThreadSetupOptions(ThreadVars *tv) {
}
TmThreadSetPrio(tv);
}
#endif
return TM_ECODE_OK;
}

@ -97,6 +97,7 @@ ThreadsAffinityType * GetAffinityTypeFromName(const char *name) {
return NULL;
}
#if !defined OS_WIN32 && !defined __OpenBSD__
static void AffinitySetupInit()
{
int i, j;
@ -112,7 +113,6 @@ static void AffinitySetupInit()
}
SCMutexInit(&thread_affinity[i].taf_mutex, NULL);
}
return;
}
@ -168,6 +168,7 @@ static void build_cpuset(ConfNode *node, cpu_set_t *cpu)
break;
}
}
#endif /* OS_WIN32 and __OpenBSD__ */
/**
* \brief Extract cpu affinity configuration from current config file
@ -175,6 +176,7 @@ static void build_cpuset(ConfNode *node, cpu_set_t *cpu)
void AffinitySetupLoadFromConfig()
{
#if !defined OS_WIN32 && !defined __OpenBSD__
ConfNode *root = ConfGetNode("threading.cpu_affinity");
ConfNode *affinity;
@ -269,6 +271,7 @@ void AffinitySetupLoadFromConfig()
}
}
}
#endif /* OS_WIN32 and __OpenBSD__ */
}
/**
@ -279,6 +282,7 @@ int AffinityGetNextCPU(ThreadsAffinityType *taf)
{
int ncpu = 0;
#if !defined OS_WIN32 && !defined __OpenBSD__
SCMutexLock(&taf->taf_mutex);
ncpu = taf->lcpu;
while (!CPU_ISSET(ncpu, &taf->cpu_set)) {
@ -291,5 +295,6 @@ int AffinityGetNextCPU(ThreadsAffinityType *taf)
taf->lcpu = 0;
SCMutexUnlock(&taf->taf_mutex);
SCLogInfo("Setting affinity on CPU %d", ncpu);
#endif /* OS_WIN32 and __OpenBSD__ */
return ncpu;
}

@ -25,14 +25,18 @@
#define __UTIL_AFFINITY_H__
#include "suricata-common.h"
#ifdef OS_FREEBSD
#if defined OS_FREEBSD
#include <sched.h>
#include <sys/param.h>
#include <sys/resource.h>
#include <sys/cpuset.h>
#include <sys/thr.h>
#define cpu_set_t cpuset_t
#elif OS_DARWIN
#elif defined __OpenBSD__
#include <sched.h>
#include <sys/param.h>
#include <sys/resource.h>
#elif defined OS_DARWIN
#include <mach/mach.h>
#include <mach/mach_init.h>
#include <mach/thread_policy.h>
@ -62,13 +66,17 @@ enum {
typedef struct ThreadsAffinityType_ {
char *name;
#if !defined OS_WIN32 && !defined __OpenBSD__
cpu_set_t cpu_set;
#endif
uint8_t mode_flag;
int prio;
int nb_threads;
#if !defined OS_WIN32 && !defined __OpenBSD__
cpu_set_t lowprio_cpu;
cpu_set_t medprio_cpu;
cpu_set_t hiprio_cpu;
#endif
SCMutex taf_mutex;
uint16_t lcpu; /* use by exclusive mode */
} ThreadsAffinityType;

@ -35,6 +35,11 @@
#define SCByteSwap16(x) bswap16(x)
#define SCByteSwap32(x) bswap32(x)
#define SCByteSwap64(x) bswap64(x)
#elif defined __OpenBSD__
#include <sys/types.h>
#define SCByteSwap16(x) swap16(x)
#define SCByteSwap32(x) swap32(x)
#define SCByteSwap64(x) swap64(x)
#elif OS_DARWIN
#include <libkern/OSByteOrder.h>
#define SCByteSwap16(x) OSSwapInt16(x)

@ -29,7 +29,11 @@
#include "util-error.h"
#include "pcre.h"
#include "util-debug-filters.h"
#if defined __OpenBSD__
//#include <sys/syslog.h>
#else
#include "syslog.h"
#endif
#ifndef __UTIL_DEBUG_H__
#define __UTIL_DEBUG_H__

@ -33,6 +33,10 @@
#define USE_FMEM_WRAPPER 1
#endif
#ifdef __OpenBSD__
#define USE_FMEM_WRAPPER 1
#endif
#ifdef USE_FMEM_WRAPPER
#ifdef OS_WIN32

@ -37,6 +37,10 @@
#define USE_FMEM_WRAPPER 1
#endif
#ifdef __OpenBSD__
#define USE_FMEM_WRAPPER 1
#endif
#ifdef OS_WIN32
#define USE_FMEM_WRAPPER 1
#endif

@ -30,7 +30,7 @@
#include "suricata-common.h"
#include "suricata-common.h"
#ifdef OS_FREEBSD
#if defined OS_FREEBSD || defined __OpenBSD__
#include <netinet/in.h>
#endif /* OS_FREEBSD */
#ifdef OS_DARWIN

@ -24,9 +24,9 @@
* when constructing unittests
*/
#include "suricata-common.h"
#include <netinet/in.h>
#include "suricata-common.h"
#include "decode.h"

Loading…
Cancel
Save