Module: xenomai-2.5 Branch: master Commit: 00f56a94218fcb0a46da3648de21a31bda02e493 URL: http://git.xenomai.org/?p=xenomai-2.5.git;a=commit;h=00f56a94218fcb0a46da3648de21a31bda02e493
Author: Gilles Chanteperdrix <gilles.chanteperd...@free-electrons.com> Date: Wed Feb 24 10:29:03 2010 +0100 Make libxeno_common a real shared library --- include/asm-generic/bits/mlock_alert.h | 31 ++----------------------------- src/skins/common/Makefile.am | 10 ++++++---- src/skins/common/bind.c | 25 ++++++++++++++++++++++++- src/skins/common/current.c | 18 +++++++----------- src/skins/common/sem_heap.c | 1 - src/skins/common/sigshadow.c | 13 +++++-------- src/skins/native/Makefile.am | 2 -- src/skins/posix/Makefile.am | 2 -- src/skins/psos+/Makefile.am | 2 -- src/skins/rtai/Makefile.am | 2 -- src/skins/rtdm/Makefile.am | 2 -- src/skins/uitron/Makefile.am | 2 -- src/skins/vrtx/Makefile.am | 2 -- src/skins/vxworks/Makefile.am | 2 -- src/testsuite/clocktest/Makefile.am | 4 +++- src/testsuite/cyclic/Makefile.am | 4 +++- src/testsuite/irqbench/Makefile.am | 5 +++-- src/testsuite/latency/Makefile.am | 1 + src/testsuite/sigtest/Makefile.am | 4 +++- src/testsuite/switchtest/Makefile.am | 4 +++- src/testsuite/unit/Makefile.am | 5 +++++ 21 files changed, 65 insertions(+), 76 deletions(-) diff --git a/include/asm-generic/bits/mlock_alert.h b/include/asm-generic/bits/mlock_alert.h index 6c7217d..6a4e3cd 100644 --- a/include/asm-generic/bits/mlock_alert.h +++ b/include/asm-generic/bits/mlock_alert.h @@ -1,35 +1,8 @@ #ifndef _XENO_ASM_GENERIC_BITS_MLOCK_ALERT_H #define _XENO_ASM_GENERIC_BITS_MLOCK_ALERT_H -#include <stdio.h> -#include <stdlib.h> -#include <signal.h> -#include <pthread.h> +extern int xeno_sigxcpu_no_mlock; -__attribute__ ((weak)) -int xeno_sigxcpu_no_mlock = 1; - -__attribute__ ((weak, visibility ("internal"))) -void xeno_handle_mlock_alert(int sig) -{ - struct sigaction sa; - - if (xeno_sigxcpu_no_mlock) { - fprintf(stderr, "Xenomai: process memory not locked " - "(missing mlockall?)\n"); - fflush(stderr); - exit(4); - } - - /* XNTRAPSW was set for the thread but no user-defined handler - has been set to override our internal handler, so let's - invoke the default signal action. */ - - sa.sa_handler = SIG_DFL; - sigemptyset(&sa.sa_mask); - sa.sa_flags = 0; - sigaction(SIGXCPU, &sa, NULL); - pthread_kill(pthread_self(), SIGXCPU); -} +void xeno_handle_mlock_alert(int sig); #endif /* _XENO_ASM_GENERIC_BITS_MLOCK_ALERT_H */ diff --git a/src/skins/common/Makefile.am b/src/skins/common/Makefile.am index 8466833..e9d4ab6 100644 --- a/src/skins/common/Makefile.am +++ b/src/skins/common/Makefile.am @@ -1,12 +1,14 @@ -noinst_LTLIBRARIES = libxeno_common.la +lib_LTLIBRARIES = libxenomai.la noinst_HEADERS = sem_heap.h -libxeno_common_la_SOURCES = bind.c current.c sigshadow.c timeconv.c +libxenomai_la_SOURCES = bind.c current.c sigshadow.c timeconv.c if CONFIG_XENO_FASTSYNCH -libxeno_common_la_SOURCES += sem_heap.c +libxenomai_la_SOURCES += sem_heap.c endif -libxeno_common_la_CPPFLAGS = \ +libxenomai_la_LDFLAGS = @XENO_DLOPEN_CONSTRAINT@ -version-info 0:0:0 -lpthread + +libxenomai_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include diff --git a/src/skins/common/bind.c b/src/skins/common/bind.c index 0c9917a..3967cce 100644 --- a/src/skins/common/bind.c +++ b/src/skins/common/bind.c @@ -11,10 +11,11 @@ #include <asm/xenomai/bits/bind.h> #include "sem_heap.h" +int xeno_sigxcpu_no_mlock = 1; static pthread_t xeno_main_tid; static xnsighandler *xnsig_handlers[32]; -void __attribute__((weak)) xeno_sigill_handler(int sig) +static void xeno_sigill_handler(int sig) { fprintf(stderr, "Xenomai or CONFIG_XENO_OPT_PERVASIVE disabled.\n" "(modprobe xeno_nucleus?)\n"); @@ -152,3 +153,25 @@ void xeno_fault_stack(void) stk[0] = stk[sizeof(stk) - 1] = 0xA5; } + +void xeno_handle_mlock_alert(int sig) +{ + struct sigaction sa; + + if (xeno_sigxcpu_no_mlock) { + fprintf(stderr, "Xenomai: process memory not locked " + "(missing mlockall?)\n"); + fflush(stderr); + exit(4); + } + + /* XNTRAPSW was set for the thread but no user-defined handler + has been set to override our internal handler, so let's + invoke the default signal action. */ + + sa.sa_handler = SIG_DFL; + sigemptyset(&sa.sa_mask); + sa.sa_flags = 0; + sigaction(SIGXCPU, &sa, NULL); + pthread_kill(pthread_self(), SIGXCPU); +} diff --git a/src/skins/common/current.c b/src/skins/common/current.c index a371cab..89e39c8 100644 --- a/src/skins/common/current.c +++ b/src/skins/common/current.c @@ -6,9 +6,9 @@ #include <nucleus/types.h> #ifdef HAVE___THREAD -__thread __attribute__ ((tls_model ("initial-exec"), weak)) +__thread __attribute__ ((tls_model ("initial-exec"))) xnhandle_t xeno_current = XN_NO_HANDLE; -__thread __attribute__ ((tls_model ("initial-exec"), weak)) +__thread __attribute__ ((tls_model ("initial-exec"))) unsigned long xeno_current_mode; static inline void __xeno_set_current(xnhandle_t current) @@ -18,25 +18,22 @@ static inline void __xeno_set_current(xnhandle_t current) #else /* !HAVE___THREAD */ #include <pthread.h> -pthread_once_t xeno_init_current_keys_once __attribute__((weak)); -pthread_key_t xeno_current_key __attribute__ ((weak)); -pthread_key_t xeno_current_mode_key __attribute__ ((weak)); +static pthread_key_t xeno_current_key; +static pthread_key_t xeno_current_mode_key; static inline void __xeno_set_current(xnhandle_t current) { pthread_setspecific(xeno_current_key, (void *)current); } -__attribute__ ((weak)) -unsigned long *xeno_init_current_mode(void) +static unsigned long *xeno_init_current_mode(void) { unsigned long *mode = malloc(sizeof(unsigned long)); pthread_setspecific(xeno_current_mode_key, mode); return mode; } -__attribute__ ((weak)) -void init_current_keys(void) +static void init_current_keys(void) { int err = pthread_key_create(&xeno_current_key, NULL); if (err) @@ -51,14 +48,13 @@ void init_current_keys(void) } } -__attribute__ ((weak)) void xeno_init_current_keys(void) { + static pthread_once_t xeno_init_current_keys_once = PTHREAD_ONCE_INIT; pthread_once(&xeno_init_current_keys_once, init_current_keys); } #endif /* !HAVE___THREAD */ -__attribute__ ((weak)) void xeno_set_current(void) { xnhandle_t current; diff --git a/src/skins/common/sem_heap.c b/src/skins/common/sem_heap.c index 723e031..ad2e9b8 100644 --- a/src/skins/common/sem_heap.c +++ b/src/skins/common/sem_heap.c @@ -12,7 +12,6 @@ #include "sem_heap.h" -__attribute__ ((weak)) unsigned long xeno_sem_heap[2] = { 0, 0 }; static void *map_sem_heap(unsigned shared) diff --git a/src/skins/common/sigshadow.c b/src/skins/common/sigshadow.c index c1de323..c078f09 100644 --- a/src/skins/common/sigshadow.c +++ b/src/skins/common/sigshadow.c @@ -1,12 +1,10 @@ #include <asm/xenomai/syscall.h> #include <asm-generic/xenomai/bits/sigshadow.h> -pthread_once_t __attribute__((weak)) - xeno_sigshadow_installed = PTHREAD_ONCE_INIT; -struct sigaction __attribute__((weak)) xeno_saved_sigshadow_action; +pthread_once_t xeno_sigshadow_installed = PTHREAD_ONCE_INIT; +static struct sigaction xeno_saved_sigshadow_action; -int __attribute__((weak)) -xeno_sigwinch_handler(int sig, siginfo_t *si, void *ctxt) +int xeno_sigwinch_handler(int sig, siginfo_t *si, void *ctxt) { int action; @@ -37,8 +35,7 @@ xeno_sigwinch_handler(int sig, siginfo_t *si, void *ctxt) return 1; } -void __attribute__((weak)) -xeno_sigshadow_handler(int sig, siginfo_t *si, void *ctxt) +static void xeno_sigshadow_handler(int sig, siginfo_t *si, void *ctxt) { const struct sigaction *const sa = &xeno_saved_sigshadow_action; sigset_t saved_sigset; @@ -60,7 +57,7 @@ xeno_sigshadow_handler(int sig, siginfo_t *si, void *ctxt) return; } -void __attribute__((weak)) xeno_sigshadow_install(void) +void xeno_sigshadow_install(void) { struct sigaction new_sigshadow_action; diff --git a/src/skins/native/Makefile.am b/src/skins/native/Makefile.am index 9778465..3497f90 100644 --- a/src/skins/native/Makefile.am +++ b/src/skins/native/Makefile.am @@ -23,5 +23,3 @@ libnative_la_SOURCES = \ libnative_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include - -libnative_la_LIBADD = ../common/libxeno_common.la diff --git a/src/skins/posix/Makefile.am b/src/skins/posix/Makefile.am index e912d9c..d6a0912 100644 --- a/src/skins/posix/Makefile.am +++ b/src/skins/posix/Makefile.am @@ -26,8 +26,6 @@ libpthread_rt_la_CPPFLAGS = \ -I$(top_srcdir)/include \ -I$(top_srcdir)/include/posix -libpthread_rt_la_LIBADD = ../common/libxeno_common.la - install-data-local: $(mkinstalldirs) $(DESTDIR)$(libdir) $(INSTALL_DATA) $(srcdir)/posix.wrappers $(DESTDIR)$(libdir) diff --git a/src/skins/psos+/Makefile.am b/src/skins/psos+/Makefile.am index a4f75b5..3e4464d 100644 --- a/src/skins/psos+/Makefile.am +++ b/src/skins/psos+/Makefile.am @@ -14,5 +14,3 @@ libpsos_la_SOURCES = \ libpsos_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include - -libpsos_la_LIBADD = ../common/libxeno_common.la diff --git a/src/skins/rtai/Makefile.am b/src/skins/rtai/Makefile.am index ba2532f..bae83c1 100644 --- a/src/skins/rtai/Makefile.am +++ b/src/skins/rtai/Makefile.am @@ -8,5 +8,3 @@ librtai_la_SOURCES = init.c \ librtai_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include - -librtai_la_LIBADD = ../common/libxeno_common.la diff --git a/src/skins/rtdm/Makefile.am b/src/skins/rtdm/Makefile.am index 5daed5e..73f97cf 100644 --- a/src/skins/rtdm/Makefile.am +++ b/src/skins/rtdm/Makefile.am @@ -9,5 +9,3 @@ librtdm_la_SOURCES = \ librtdm_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include - -librtdm_la_LIBADD = ../common/libxeno_common.la diff --git a/src/skins/uitron/Makefile.am b/src/skins/uitron/Makefile.am index 3f263ed..a7ff65a 100644 --- a/src/skins/uitron/Makefile.am +++ b/src/skins/uitron/Makefile.am @@ -12,5 +12,3 @@ libuitron_la_SOURCES = \ libuitron_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include - -libuitron_la_LIBADD = ../common/libxeno_common.la diff --git a/src/skins/vrtx/Makefile.am b/src/skins/vrtx/Makefile.am index 871ae2e..11c218d 100644 --- a/src/skins/vrtx/Makefile.am +++ b/src/skins/vrtx/Makefile.am @@ -19,5 +19,3 @@ libvrtx_la_SOURCES = \ libvrtx_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include - -libvrtx_la_LIBADD = ../common/libxeno_common.la diff --git a/src/skins/vxworks/Makefile.am b/src/skins/vxworks/Makefile.am index 0e84717..b7b74e6 100644 --- a/src/skins/vxworks/Makefile.am +++ b/src/skins/vxworks/Makefile.am @@ -20,5 +20,3 @@ libvxworks_la_SOURCES = \ libvxworks_la_CPPFLAGS = \ @XENO_USER_CFLAGS@ \ -I$(top_srcdir)/include - -libvxworks_la_LIBADD = ../common/libxeno_common.la diff --git a/src/testsuite/clocktest/Makefile.am b/src/testsuite/clocktest/Makefile.am index 69d10b0..38552b9 100644 --- a/src/testsuite/clocktest/Makefile.am +++ b/src/testsuite/clocktest/Makefile.am @@ -11,7 +11,9 @@ clocktest_CPPFLAGS = -I$(top_srcdir)/include/posix $(XENO_USER_CFLAGS) -I$(top_s clocktest_LDFLAGS = $(XENO_POSIX_WRAPPERS) $(XENO_USER_LDFLAGS) clocktest_LDADD = \ - ../../skins/posix/libpthread_rt.la -lpthread -lrt + ../../skins/posix/libpthread_rt.la \ + ../../skins/common/libxenomai.la \ + -lpthread -lrt install-data-local: $(mkinstalldirs) $(DESTDIR)$(testdir) diff --git a/src/testsuite/cyclic/Makefile.am b/src/testsuite/cyclic/Makefile.am index 2ee19de..7e4bf2f 100644 --- a/src/testsuite/cyclic/Makefile.am +++ b/src/testsuite/cyclic/Makefile.am @@ -11,7 +11,9 @@ cyclictest_CPPFLAGS = -I$(top_srcdir)/include/posix $(XENO_USER_CFLAGS) -DIPIPE_ cyclictest_LDFLAGS = $(XENO_POSIX_WRAPPERS) $(XENO_USER_LDFLAGS) cyclictest_LDADD = \ - ../../skins/posix/libpthread_rt.la -lpthread -lrt + ../../skins/posix/libpthread_rt.la \ + ../../skins/common/libxenomai.la \ + -lpthread -lrt install-data-local: $(mkinstalldirs) $(DESTDIR)$(testdir) diff --git a/src/testsuite/irqbench/Makefile.am b/src/testsuite/irqbench/Makefile.am index 29fb308..e04ffa4 100644 --- a/src/testsuite/irqbench/Makefile.am +++ b/src/testsuite/irqbench/Makefile.am @@ -21,8 +21,9 @@ irqloop_LDFLAGS = \ $(XENO_USER_LDFLAGS) irqloop_LDADD = \ - ../../skins/posix/libpthread_rt.la -lpthread -lrt - + ../../skins/posix/libpthread_rt.la \ + ../../skins/common/libxenomai.la \ + -lpthread -lrt irqbench_SOURCES = irqbench.c diff --git a/src/testsuite/latency/Makefile.am b/src/testsuite/latency/Makefile.am index b44d883..b321c75 100644 --- a/src/testsuite/latency/Makefile.am +++ b/src/testsuite/latency/Makefile.am @@ -13,6 +13,7 @@ latency_LDFLAGS = @XENO_USER_LDFLAGS@ latency_LDADD = \ ../../skins/native/libnative.la \ ../../skins/rtdm/librtdm.la \ + ../../skins/common/libxenomai.la \ -lpthread -lm install-data-local: diff --git a/src/testsuite/sigtest/Makefile.am b/src/testsuite/sigtest/Makefile.am index a2f20bd..bf18b24 100644 --- a/src/testsuite/sigtest/Makefile.am +++ b/src/testsuite/sigtest/Makefile.am @@ -14,7 +14,9 @@ sigtest_LDFLAGS += -rdynamic endif sigtest_LDADD = \ - ../../skins/posix/libpthread_rt.la -lpthread -lrt + ../../skins/posix/libpthread_rt.la \ + ../../skins/common/libxenomai.la \ + -lpthread -lrt install-data-local: $(mkinstalldirs) $(DESTDIR)$(testdir) diff --git a/src/testsuite/switchtest/Makefile.am b/src/testsuite/switchtest/Makefile.am index 1117585..57d11ca 100644 --- a/src/testsuite/switchtest/Makefile.am +++ b/src/testsuite/switchtest/Makefile.am @@ -11,7 +11,9 @@ switchtest_CPPFLAGS = -I$(top_srcdir)/include/posix $(XENO_USER_CFLAGS) -g -I$(t switchtest_LDFLAGS = $(XENO_POSIX_WRAPPERS) $(XENO_USER_LDFLAGS) switchtest_LDADD = \ - ../../skins/posix/libpthread_rt.la -lpthread -lrt + ../../skins/posix/libpthread_rt.la \ + ../../skins/common/libxenomai.la \ + -lpthread -lrt install-data-local: $(mkinstalldirs) $(DESTDIR)$(testdir) diff --git a/src/testsuite/unit/Makefile.am b/src/testsuite/unit/Makefile.am index 65ce5d4..e051bc7 100644 --- a/src/testsuite/unit/Makefile.am +++ b/src/testsuite/unit/Makefile.am @@ -15,6 +15,7 @@ arith_LDFLAGS = @XENO_USER_LDFLAGS@ arith_LDADD = \ ../../skins/native/libnative.la \ + ../../skins/common/libxenomai.la \ -lpthread -lm wakeup_time_SOURCES = wakeup-time.c @@ -27,6 +28,7 @@ wakeup_time_LDFLAGS = @XENO_USER_LDFLAGS@ wakeup_time_LDADD = \ ../../skins/native/libnative.la \ + ../../skins/common/libxenomai.la \ -lpthread -lm mutex_torture_posix_SOURCES = mutex-torture.c @@ -40,6 +42,7 @@ mutex_torture_posix_LDFLAGS = $(XENO_POSIX_WRAPPERS) @XENO_USER_LDFLAGS@ mutex_torture_posix_LDADD = \ ../../skins/posix/libpthread_rt.la \ ../../skins/native/libnative.la \ + ../../skins/common/libxenomai.la \ -lpthread -lrt -lm mutex_torture_native_SOURCES = mutex-torture.c @@ -52,6 +55,7 @@ mutex_torture_native_LDFLAGS = @XENO_USER_LDFLAGS@ mutex_torture_native_LDADD = \ ../../skins/native/libnative.la \ + ../../skins/common/libxenomai.la \ -lpthread -lm check_vdso_SOURCES = check-vdso.c @@ -64,6 +68,7 @@ check_vdso_LDFLAGS = @XENO_USER_LDFLAGS@ check_vdso_LDADD = \ ../../skins/native/libnative.la \ + ../../skins/common/libxenomai.la \ -lpthread -lm install-data-local: _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git