|
|
|
|
@ -12,6 +12,7 @@
|
|
|
|
|
#include <pcre.h>
|
|
|
|
|
#include <stdarg.h>
|
|
|
|
|
#include <arpa/inet.h>
|
|
|
|
|
#include <pthread.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -146,60 +147,32 @@ static inline int smart_pton(int af, char *src, void *dst) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if !GLIB_CHECK_VERSION(2,32,0)
|
|
|
|
|
typedef pthread_mutex_t mutex_t;
|
|
|
|
|
typedef pthread_rwlock_t rwlock_t;
|
|
|
|
|
typedef pthread_cond_t cond_t;
|
|
|
|
|
|
|
|
|
|
typedef GStaticMutex mutex_t;
|
|
|
|
|
typedef GStaticRWLock rwlock_t;
|
|
|
|
|
typedef GCond *cond_t;
|
|
|
|
|
#define mutex_init(m) pthread_mutex_init(m, NULL)
|
|
|
|
|
#define mutex_destroy(m) pthread_mutex_destroy(m)
|
|
|
|
|
#define mutex_lock(m) pthread_mutex_lock(m)
|
|
|
|
|
#define mutex_trylock(m) pthread_mutex_trylock(m)
|
|
|
|
|
#define mutex_unlock(m) pthread_mutex_unlock(m)
|
|
|
|
|
#define MUTEX_STATIC_INIT PTHREAD_MUTEX_INITIALIZER
|
|
|
|
|
|
|
|
|
|
#define mutex_init(m) g_static_mutex_init(m)
|
|
|
|
|
#define mutex_destroy(m) g_static_mutex_free(m)
|
|
|
|
|
#define mutex_lock(m) g_static_mutex_lock(m)
|
|
|
|
|
#define mutex_trylock(m) g_static_mutex_trylock(m)
|
|
|
|
|
#define mutex_unlock(m) g_static_mutex_unlock(m)
|
|
|
|
|
#define MUTEX_STATIC_INIT G_STATIC_MUTEX_INIT
|
|
|
|
|
|
|
|
|
|
#define rwlock_init(l) g_static_rw_lock_init(l)
|
|
|
|
|
#define rwlock_lock_r(l) g_static_rw_lock_reader_lock(l)
|
|
|
|
|
#define rwlock_unlock_r(l) g_static_rw_lock_reader_unlock(l)
|
|
|
|
|
#define rwlock_lock_w(l) g_static_rw_lock_writer_lock(l)
|
|
|
|
|
#define rwlock_unlock_w(l) g_static_rw_lock_writer_unlock(l)
|
|
|
|
|
|
|
|
|
|
#define cond_init(c) *(c) = g_cond_new()
|
|
|
|
|
#define cond_wait(c,m) g_cond_wait(*(c),m)
|
|
|
|
|
#define cond_signal(c) g_cond_signal(*(c))
|
|
|
|
|
#define cond_broadcast(c) g_cond_broadcast(*(c))
|
|
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
|
|
|
|
|
typedef GMutex mutex_t;
|
|
|
|
|
typedef GRWLock rwlock_t;
|
|
|
|
|
typedef GCond cond_t;
|
|
|
|
|
|
|
|
|
|
#define mutex_init(m) g_mutex_init(m)
|
|
|
|
|
#define mutex_destroy(m) g_mutex_clear(m)
|
|
|
|
|
#define mutex_lock(m) g_mutex_lock(m)
|
|
|
|
|
#define mutex_trylock(m) g_mutex_trylock(m)
|
|
|
|
|
#define mutex_unlock(m) g_mutex_unlock(m)
|
|
|
|
|
#define MUTEX_STATIC_INIT {0}
|
|
|
|
|
|
|
|
|
|
#define rwlock_init(l) g_rw_lock_init(l)
|
|
|
|
|
#define rwlock_lock_r(l) g_rw_lock_reader_lock(l)
|
|
|
|
|
#define rwlock_unlock_r(l) g_rw_lock_reader_unlock(l)
|
|
|
|
|
#define rwlock_lock_w(l) g_rw_lock_writer_lock(l)
|
|
|
|
|
#define rwlock_unlock_w(l) g_rw_lock_writer_unlock(l)
|
|
|
|
|
|
|
|
|
|
#define cond_init(c) g_cond_init(c)
|
|
|
|
|
#define cond_wait(c,m) g_cond_wait(c,m)
|
|
|
|
|
#define cond_signal(c) g_cond_signal(c)
|
|
|
|
|
#define cond_broadcast(c) g_cond_broadcast(c)
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
#define rwlock_init(l) pthread_rwlock_init(l, NULL)
|
|
|
|
|
#define rwlock_lock_r(l) pthread_rwlock_rdlock(l)
|
|
|
|
|
#define rwlock_unlock_r(l) pthread_rwlock_unlock(l)
|
|
|
|
|
#define rwlock_lock_w(l) pthread_rwlock_wrlock(l)
|
|
|
|
|
#define rwlock_unlock_w(l) pthread_rwlock_unlock(l)
|
|
|
|
|
|
|
|
|
|
#define cond_init(c) pthread_cond_init(c, NULL)
|
|
|
|
|
#define cond_wait(c,m) pthread_cond_wait(c,m)
|
|
|
|
|
#define cond_signal(c) pthread_cond_signal(c)
|
|
|
|
|
#define cond_broadcast(c) pthread_cond_broadcast(c)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void thread_join_me();
|
|
|
|
|
void threads_join_all();
|
|
|
|
|
int thread_create(void *(*)(void *), void *, int, pthread_t *);
|
|
|
|
|
void thread_create_detach(void (*)(void *), void *);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|