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

Reply via email to