0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-23 02:01:55 +00:00

Enforce support for thread local variables and POSIX threads

This commit is contained in:
Maria Matejka 2020-04-22 16:42:20 +02:00
parent a861727d98
commit 5387208e1c
4 changed files with 11 additions and 48 deletions

View File

@ -36,12 +36,6 @@ AC_ARG_ENABLE([memcheck],
[enable_memcheck=yes] [enable_memcheck=yes]
) )
AC_ARG_ENABLE([pthreads],
[AS_HELP_STRING([--enable-pthreads], [enable POSIX threads support @<:@try@:>@])],
[],
[enable_pthreads=try]
)
AC_ARG_ENABLE([libssh], AC_ARG_ENABLE([libssh],
[AS_HELP_STRING([--enable-libssh], [enable LibSSH support in RPKI @<:@try@:>@])], [AS_HELP_STRING([--enable-libssh], [enable LibSSH support in RPKI @<:@try@:>@])],
[], [],
@ -125,25 +119,20 @@ if test -z "$GCC" ; then
fi fi
BIRD_CHECK_THREAD_LOCAL BIRD_CHECK_THREAD_LOCAL
if test "$bird_cv_thread_local" = yes ; then if test "$bird_cv_thread_local" = no ; then
AC_DEFINE([HAVE_THREAD_LOCAL], [1], [Define to 1 if _Thread_local is available]) AC_MSG_ERROR([Thread-local storage not available])
fi fi
if test "$enable_pthreads" != no ; then BIRD_CHECK_PTHREADS
BIRD_CHECK_PTHREADS if test "$bird_cv_lib_pthreads" = no ; then
AC_MSG_ERROR([POSIX threads not avalable])
fi
if test "$bird_cv_lib_pthreads" = yes ; then CFLAGS="$CFLAGS -pthread"
AC_DEFINE([USE_PTHREADS], [1], [Define to 1 if pthreads are enabled]) LDFLAGS="$LDFLAGS -pthread"
CFLAGS="$CFLAGS -pthread"
LDFLAGS="$LDFLAGS -pthread"
proto_bfd=bfd
elif test "$enable_pthreads" = yes ; then
AC_MSG_ERROR([POSIX threads not available.])
fi
if test "$enable_pthreads" = try ; then if test "$enable_pthreads" = try ; then
enable_pthreads="$bird_cv_lib_pthreads" enable_pthreads="$bird_cv_lib_pthreads"
fi
fi fi
# This is assumed to be necessary for proper BIRD build # This is assumed to be necessary for proper BIRD build
@ -304,7 +293,7 @@ if test "$enable_mpls_kernel" != no ; then
fi fi
fi fi
all_protocols="$proto_bfd babel bgp mrt ospf perf pipe radv rip rpki static" all_protocols="bfd babel bgp mrt ospf perf pipe radv rip rpki static"
all_protocols=`echo $all_protocols | sed 's/ /,/g'` all_protocols=`echo $all_protocols | sed 's/ /,/g'`

View File

@ -75,10 +75,6 @@ static inline int u64_cmp(u64 i1, u64 i2)
#define NONNULL(...) __attribute__((nonnull (__VA_ARGS__))) #define NONNULL(...) __attribute__((nonnull (__VA_ARGS__)))
#define USE_RESULT __attribute__((warn_unused_result)) #define USE_RESULT __attribute__((warn_unused_result))
#ifndef HAVE_THREAD_LOCAL
#define _Thread_local
#endif
/* Microsecond time */ /* Microsecond time */
typedef s64 btime; typedef s64 btime;

View File

@ -39,9 +39,6 @@
struct timeloop main_timeloop; struct timeloop main_timeloop;
#ifdef USE_PTHREADS
#include <pthread.h> #include <pthread.h>
/* Data accessed and modified from proto/bfd/io.c */ /* Data accessed and modified from proto/bfd/io.c */
@ -62,14 +59,6 @@ timeloop_init_current(void)
void wakeup_kick_current(void); void wakeup_kick_current(void);
#else
/* Just use main timelooop */
static inline struct timeloop * timeloop_current(void) { return &main_timeloop; }
static inline void timeloop_init_current(void) { }
#endif
btime btime
current_time(void) current_time(void)
{ {

View File

@ -36,8 +36,6 @@ static list *current_log_list;
static char *current_syslog_name; /* NULL -> syslog closed */ static char *current_syslog_name; /* NULL -> syslog closed */
#ifdef USE_PTHREADS
#include <pthread.h> #include <pthread.h>
static pthread_mutex_t log_mutex; static pthread_mutex_t log_mutex;
@ -48,15 +46,6 @@ static pthread_t main_thread;
void main_thread_init(void) { main_thread = pthread_self(); } void main_thread_init(void) { main_thread = pthread_self(); }
static int main_thread_self(void) { return pthread_equal(pthread_self(), main_thread); } static int main_thread_self(void) { return pthread_equal(pthread_self(), main_thread); }
#else
static inline void log_lock(void) { }
static inline void log_unlock(void) { }
void main_thread_init(void) { }
static int main_thread_self(void) { return 1; }
#endif
#ifdef HAVE_SYSLOG_H #ifdef HAVE_SYSLOG_H
#include <sys/syslog.h> #include <sys/syslog.h>