diff options
Diffstat (limited to 'framework/src/suricata/src/threads.h')
-rw-r--r-- | framework/src/suricata/src/threads.h | 300 |
1 files changed, 0 insertions, 300 deletions
diff --git a/framework/src/suricata/src/threads.h b/framework/src/suricata/src/threads.h deleted file mode 100644 index 0a843b7f..00000000 --- a/framework/src/suricata/src/threads.h +++ /dev/null @@ -1,300 +0,0 @@ -/* Copyright (C) 2007-2013 Open Information Security Foundation - * - * You can copy, redistribute or modify this Program under the terms of - * the GNU General Public License version 2 as published by the Free - * Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * version 2 along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -/** - * \file - * - * \author Victor Julien <victor@inliniac.net> - * \author Pablo Rincon Crespo <pablo.rincon.crespo@gmail.com> - * - * Threading functions defined as macros - */ - -#ifndef __THREADS_H__ -#define __THREADS_H__ - -#if HAVE_CONFIG_H -#include <config.h> -#endif - -/* need this for the _POSIX_SPIN_LOCKS define */ -#if HAVE_UNISTD_H -#include <unistd.h> -#endif - -#ifdef PROFILING -#include "util-cpu.h" -#ifdef PROFILE_LOCKING -#include "util-profiling-locks.h" -#endif /* PROFILE_LOCKING */ -#endif /* PROFILING */ - -#if defined OS_FREEBSD || __OpenBSD__ - -#if ! defined __OpenBSD__ -#include <sys/thr.h> -#endif -enum { - PRIO_LOW = 2, - PRIO_MEDIUM = 0, - PRIO_HIGH = -2, -}; - -#elif OS_DARWIN - -#include <mach/mach_init.h> -enum { - PRIO_LOW = 2, - PRIO_MEDIUM = 0, - PRIO_HIGH = -2, -}; - -#elif OS_WIN32 - -#include <windows.h> -enum { - PRIO_LOW = THREAD_PRIORITY_LOWEST, - PRIO_MEDIUM = THREAD_PRIORITY_NORMAL, - PRIO_HIGH = THREAD_PRIORITY_HIGHEST, -}; - -#else /* LINUX */ - -#if HAVE_SYS_SYSCALL_H -#include <sys/syscall.h> -#endif -#if HAVE_SYS_PRCTL_H -#include <sys/prctl.h> -#define THREAD_NAME_LEN 16 -#endif - -enum { - PRIO_LOW = 2, - PRIO_MEDIUM = 0, - PRIO_HIGH = -2, -}; - -#endif /* OS_FREEBSD */ - -#include <pthread.h> - -/* The mutex/spinlock/condition definitions and functions are used - * in the same way as the POSIX definitions; Anyway we are centralizing - * them here to make an easier portability process and debugging process; - * Please, make sure you initialize mutex and spinlocks before using them - * because, some OS doesn't initialize them for you :) - */ - -//#define DBG_THREADS - -#ifdef __tile__ - #include "threads-arch-tile.h" -#elif defined DBG_THREADS - #ifdef PROFILE_LOCKING - #error "Cannot mix DBG_THREADS and PROFILE_LOCKING" - #endif - #include "threads-debug.h" -#elif defined PROFILE_LOCKING - #include "threads-profile.h" -#else /* normal */ - -/* mutex */ -#define SCMutex pthread_mutex_t -#define SCMutexAttr pthread_mutexattr_t -#define SCMutexInit(mut, mutattr ) pthread_mutex_init(mut, mutattr) -#define SCMutexLock(mut) pthread_mutex_lock(mut) -#define SCMutexTrylock(mut) pthread_mutex_trylock(mut) -#define SCMutexUnlock(mut) pthread_mutex_unlock(mut) -#define SCMutexDestroy pthread_mutex_destroy -#define SCMUTEX_INITIALIZER PTHREAD_MUTEX_INITIALIZER - -/* rwlocks */ -#define SCRWLock pthread_rwlock_t -#define SCRWLockInit(rwl, rwlattr ) pthread_rwlock_init(rwl, rwlattr) -#define SCRWLockWRLock(rwl) pthread_rwlock_wrlock(rwl) -#define SCRWLockRDLock(rwl) pthread_rwlock_rdlock(rwl) -#define SCRWLockTryWRLock(rwl) pthread_rwlock_trywrlock(rwl) -#define SCRWLockTryRDLock(rwl) pthread_rwlock_tryrdlock(rwl) -#define SCRWLockUnlock(rwl) pthread_rwlock_unlock(rwl) -#define SCRWLockDestroy pthread_rwlock_destroy - -/* conditions */ -#define SCCondT pthread_cond_t -#define SCCondInit pthread_cond_init -#define SCCondSignal pthread_cond_signal -#define SCCondDestroy pthread_cond_destroy -#define SCCondWait(cond, mut) pthread_cond_wait(cond, mut) - -/* ctrl mutex */ -#define SCCtrlMutex pthread_mutex_t -#define SCCtrlMutexAttr pthread_mutexattr_t -#define SCCtrlMutexInit(mut, mutattr ) pthread_mutex_init(mut, mutattr) -#define SCCtrlMutexLock(mut) pthread_mutex_lock(mut) -#define SCCtrlMutexTrylock(mut) pthread_mutex_trylock(mut) -#define SCCtrlMutexUnlock(mut) pthread_mutex_unlock(mut) -#define SCCtrlMutexDestroy pthread_mutex_destroy - -/* ctrl conditions */ -#define SCCtrlCondT pthread_cond_t -#define SCCtrlCondInit pthread_cond_init -#define SCCtrlCondSignal pthread_cond_signal -#define SCCtrlCondTimedwait pthread_cond_timedwait -#define SCCtrlCondWait pthread_cond_wait -#define SCCtrlCondDestroy pthread_cond_destroy - -/* spinlocks */ -#if ((_POSIX_SPIN_LOCKS - 200112L) < 0L) || defined HELGRIND -#define SCSpinlock SCMutex -#define SCSpinLock(spin) SCMutexLock((spin)) -#define SCSpinTrylock(spin) SCMutexTrylock((spin)) -#define SCSpinUnlock(spin) SCMutexUnlock((spin)) -#define SCSpinInit(spin, spin_attr) SCMutexInit((spin), NULL) -#define SCSpinDestroy(spin) SCMutexDestroy((spin)) -#else /* no spinlocks */ -#define SCSpinlock pthread_spinlock_t -#define SCSpinLock(spin) pthread_spin_lock(spin) -#define SCSpinTrylock(spin) pthread_spin_trylock(spin) -#define SCSpinUnlock(spin) pthread_spin_unlock(spin) -#define SCSpinInit(spin, spin_attr) pthread_spin_init(spin, spin_attr) -#define SCSpinDestroy(spin) pthread_spin_destroy(spin) -#endif /* no spinlocks */ - -#endif /* __tile__ */ - -#if (!defined SCMutex || !defined SCMutexAttr || !defined SCMutexInit || \ - !defined SCMutexLock || !defined SCMutexTrylock || \ - !defined SCMutexUnlock || !defined SCMutexDestroy || \ - !defined SCMUTEX_INITIALIZER) -#error "Mutex types and/or macro's not properly defined" -#endif -#if (!defined SCCtrlMutex || !defined SCCtrlMutexAttr || !defined SCCtrlMutexInit || \ - !defined SCCtrlMutexLock || !defined SCCtrlMutexTrylock || \ - !defined SCCtrlMutexUnlock || !defined SCCtrlMutexDestroy) -#error "SCCtrlMutex types and/or macro's not properly defined" -#endif - -#if (!defined SCSpinlock || !defined SCSpinLock || \ - !defined SCSpinTrylock || !defined SCSpinUnlock || \ - !defined SCSpinInit || !defined SCSpinDestroy) -#error "Spinlock types and/or macro's not properly defined" -#endif - -#if (!defined SCRWLock || !defined SCRWLockInit || !defined SCRWLockWRLock || \ - !defined SCRWLockRDLock || !defined SCRWLockTryWRLock || \ - !defined SCRWLockTryRDLock || !defined SCRWLockUnlock || !defined SCRWLockDestroy) -#error "SCRWLock types and/or macro's not properly defined" -#endif - -#if (!defined SCCondT || !defined SCCondInit || !defined SCCondSignal || \ - !defined SCCondDestroy || !defined SCCondWait) -#error "SCCond types and/or macro's not properly defined" -#endif - -#if (!defined SCCtrlCondT || !defined SCCtrlCondInit || !defined SCCtrlCondSignal ||\ - !defined SCCtrlCondDestroy || !defined SCCtrlCondTimedwait) -#error "SCCtrlCond types and/or macro's not properly defined" -#endif - -/** Get the Current Thread Id */ -#ifdef OS_FREEBSD -#include <pthread_np.h> - -#define SCGetThreadIdLong(...) ({ \ - long tmpthid; \ - thr_self(&tmpthid); \ - u_long tid = (u_long)tmpthid; \ - tid; \ -}) -#elif __OpenBSD__ -#define SCGetThreadIdLong(...) ({ \ - pid_t tpid; \ - tpid = getpid(); \ - u_long tid = (u_long)tpid; \ - tid; \ -}) -#elif __CYGWIN__ -#define SCGetThreadIdLong(...) ({ \ - u_long tid = (u_long)GetCurrentThreadId(); \ - tid; \ -}) -#elif OS_WIN32 -#define SCGetThreadIdLong(...) ({ \ - u_long tid = (u_long)GetCurrentThreadId(); \ - tid; \ -}) -#elif OS_DARWIN -#define SCGetThreadIdLong(...) ({ \ - thread_port_t tpid; \ - tpid = mach_thread_self(); \ - u_long tid = (u_long)tpid; \ - tid; \ -}) -#else -#define SCGetThreadIdLong(...) ({ \ - pid_t tmpthid; \ - tmpthid = syscall(SYS_gettid); \ - u_long tid = (u_long)tmpthid; \ - tid; \ -}) -#endif /* OS FREEBSD */ - -/* - * OS specific macro's for setting the thread name. "top" can display - * this name. - */ -#if defined OS_FREEBSD /* FreeBSD */ -/** \todo Add implementation for FreeBSD */ -#define SCSetThreadName(n) ({ \ - char tname[16] = ""; \ - if (strlen(n) > 16) \ - SCLogDebug("Thread name is too long, truncating it..."); \ - strlcpy(tname, n, 16); \ - pthread_set_name_np(pthread_self(), tname); \ - 0; \ -}) -#elif defined __OpenBSD__ /* OpenBSD */ -/** \todo Add implementation for OpenBSD */ -#define SCSetThreadName(n) (0) -#elif defined OS_WIN32 /* Windows */ -/** \todo Add implementation for Windows */ -#define SCSetThreadName(n) (0) -#elif defined OS_DARWIN /* Mac OS X */ -/** \todo Add implementation for MacOS */ -#define SCSetThreadName(n) (0) -#elif defined PR_SET_NAME /* PR_SET_NAME */ -/** - * \brief Set the threads name - */ -#define SCSetThreadName(n) ({ \ - char tname[THREAD_NAME_LEN + 1] = ""; \ - if (strlen(n) > THREAD_NAME_LEN) \ - SCLogDebug("Thread name is too long, truncating it..."); \ - strlcpy(tname, n, THREAD_NAME_LEN); \ - int ret = 0; \ - if ((ret = prctl(PR_SET_NAME, tname, 0, 0, 0)) < 0) \ - SCLogDebug("Error setting thread name \"%s\": %s", tname, strerror(errno)); \ - ret; \ -}) -#else -#define SCSetThreadName(n) (0) -#endif - - -void ThreadMacrosRegisterTests(void); - -#endif /* __THREADS_H__ */ - |