Module: xenomai-head
Branch: master
Commit: a9dfc0d4b489c3077cf6bae11a38a8cfd21c58b8
URL:    
http://git.xenomai.org/?p=xenomai-head.git;a=commit;h=a9dfc0d4b489c3077cf6bae11a38a8cfd21c58b8

Author: Philippe Gerum <r...@xenomai.org>
Date:   Mon Oct 18 17:52:57 2010 +0200

skins: remove user-space support for handling RT signals

Real-time signal support will be re-implemented from scratch, based on
the MAYDAY support.

This reverts commit b5204f9aa6d64b96f80202433d816727dc4e3743.

---

 include/asm-generic/bits/bind.h |   16 ++-----
 include/asm-generic/syscall.h   |   60 ++++------------------------
 src/skins/common/bind.c         |   82 ++------------------------------------
 src/skins/native/init.c         |    2 +-
 src/skins/posix/init.c          |    3 +-
 src/skins/psos+/init.c          |    3 +-
 src/skins/rtdm/init.c           |    3 +-
 src/skins/uitron/init.c         |    4 +-
 src/skins/vrtx/init.c           |    2 +-
 src/skins/vxworks/init.c        |    2 +-
 10 files changed, 27 insertions(+), 150 deletions(-)

diff --git a/include/asm-generic/bits/bind.h b/include/asm-generic/bits/bind.h
index 37dc0a5..269be95 100644
--- a/include/asm-generic/bits/bind.h
+++ b/include/asm-generic/bits/bind.h
@@ -5,21 +5,15 @@
 #include <stdlib.h>
 #include <signal.h>
 
-union xnsiginfo;
-
-typedef void xnsighandler(union xnsiginfo *si);
-
 void xeno_handle_mlock_alert(int sig, siginfo_t *si, void *context);
 
-int
-xeno_bind_skin_opt(unsigned skin_magic, const char *skin,
-                  const char *module, xnsighandler *sighandler);
+int 
+xeno_bind_skin_opt(unsigned skin_magic, const char *skin, const char *module);
 
-static inline int
-xeno_bind_skin(unsigned skin_magic, const char *skin,
-              const char *module, xnsighandler *sighandler)
+static inline int 
+xeno_bind_skin(unsigned skin_magic, const char *skin, const char *module)
 {
-       int muxid = xeno_bind_skin_opt(skin_magic, skin, module, sighandler);
+       int muxid = xeno_bind_skin_opt(skin_magic, skin, module);
        struct sigaction sa;
 
        if (muxid == -1) {
diff --git a/include/asm-generic/syscall.h b/include/asm-generic/syscall.h
index 7e3d01a..89d148e 100644
--- a/include/asm-generic/syscall.h
+++ b/include/asm-generic/syscall.h
@@ -21,16 +21,6 @@
 #define _XENO_ASM_GENERIC_SYSCALL_H
 
 #include <asm/xenomai/features.h>
-#ifdef __KERNEL__
-#include <linux/types.h>
-#include <linux/signal.h>
-#include <asm/uaccess.h>
-#include <asm/xenomai/wrappers.h>
-#include <asm/xenomai/hal.h>
-#else /* !__KERNEL__ */
-#include <sys/types.h>
-#include <signal.h>
-#endif /* !__KERNEL__ */
 
 /* Xenomai multiplexer syscall. */
 #define __xn_sys_mux           555     /* Must fit within 15bit */
@@ -45,9 +35,8 @@
 #define __xn_sys_sem_heap      7
 #define __xn_sys_current       8       /* threadh = xnthread_handle(cur) */
 #define __xn_sys_current_info  9       /* r = xnshadow_current_info(&info) */
-#define __xn_sys_get_next_sigs 10      /* only unqueue pending signals. */
-#define __xn_sys_drop_u_mode   11      /* stop updating thread->u_mode */
-#define __xn_sys_mayday        12      /* request mayday fixup */
+#define __xn_sys_drop_u_mode   10      /* stop updating thread->u_mode */
+#define __xn_sys_mayday        11      /* request mayday fixup */
 
 #define XENOMAI_LINUX_DOMAIN  0
 #define XENOMAI_XENO_DOMAIN   1
@@ -74,21 +63,13 @@ typedef struct xnsysinfo {
 #define SIGDEBUG_NOMLOCK               5
 #define SIGDEBUG_WATCHDOG              6
 
-union xnsiginfo {
-       struct siginfo pse51_si;
-};
-
-struct xnsig {
-       unsigned nsigs;
-       unsigned remaining;
-       struct {
-               unsigned muxid;
-               union xnsiginfo si;
-       } pending[16];
-};
-
 #ifdef __KERNEL__
 
+#include <linux/types.h>
+#include <asm/uaccess.h>
+#include <asm/xenomai/wrappers.h>
+#include <asm/xenomai/hal.h>
+
 struct task_struct;
 struct pt_regs;
 
@@ -169,32 +150,9 @@ static inline int __xn_safe_strncpy_from_user(char *dst,
 
 #else /* !__KERNEL__ */
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-int __xnsig_dispatch(struct xnsig *sigs, int cumulated_error, int last_error);
-
-int __xnsig_dispatch_safe(struct xnsig *sigs, int cumulated_error, int 
last_error);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Called to dispatch signals which interrupted a system call. */
-static inline int xnsig_dispatch(struct xnsig *sigs, int cumul, int last)
-{
-       if (sigs->nsigs)
-               return __xnsig_dispatch(sigs, cumul, last);
-       return last;
-}
-
-static inline int xnsig_dispatch_safe(struct xnsig *sigs, int cumul, int last)
-{
-       if (sigs->nsigs)
-               return __xnsig_dispatch_safe(sigs, cumul, last);
-       return last;
-}
+#include <sys/types.h>
 
-#endif /* !__KERNEL__ */
+#endif /* __KERNEL__ */
 
 typedef struct xncompletion {
        long syncflag;          /* Semaphore variable. */
diff --git a/src/skins/common/bind.c b/src/skins/common/bind.c
index fe98fdb..ccb471d 100644
--- a/src/skins/common/bind.c
+++ b/src/skins/common/bind.c
@@ -15,7 +15,6 @@
 
 int xeno_sigxcpu_no_mlock = 1;
 static pthread_t xeno_main_tid;
-static xnsighandler *xnsig_handlers[32];
 
 static void xeno_sigill_handler(int sig)
 {
@@ -26,77 +25,8 @@ static void xeno_sigill_handler(int sig)
 
 struct xnfeatinfo xeno_featinfo;
 
-int __xnsig_dispatch(struct xnsig *sigs, int cumulated_error, int last_error)
-{
-       unsigned i;
-
-  dispatch:
-       for (i = 0; i < sigs->nsigs; i++) {
-               xnsighandler *handler;
-
-               handler = xnsig_handlers[sigs->pending[i].muxid];
-               if (handler)
-                       handler(&sigs->pending[i].si);
-       }
-
-       if (cumulated_error == -ERESTART)
-               cumulated_error = last_error;
-
-       if (sigs->remaining) {
-               sigs->nsigs = 0;
-               last_error = XENOMAI_SYSSIGS(sigs);
-               if (sigs->nsigs)
-                       goto dispatch;
-       }
-
-       return cumulated_error;
-}
-
-#ifdef XENOMAI_SYSSIGS_SAFE
-int __xnsig_dispatch_safe(struct xnsig *sigs, int cumulated_error, int 
last_error)
-{
-       unsigned i;
-
-  dispatch:
-       for (i = 0; i < sigs->nsigs; i++) {
-               xnsighandler *handler;
-
-               handler = xnsig_handlers[sigs->pending[i].muxid];
-               if (handler)
-                       handler(&sigs->pending[i].si);
-       }
-
-       if (cumulated_error == -ERESTART)
-               cumulated_error = last_error;
-
-       if (sigs->remaining) {
-               sigs->nsigs = 0;
-               last_error = XENOMAI_SYSSIGS_SAFE(sigs);
-               if (sigs->nsigs)
-                       goto dispatch;
-       }
-
-       return cumulated_error;
-}
-#endif /* XENOMAI_SYSSIGS_SAFE */
-
-#ifdef xeno_arch_features_check
-static void do_init_arch_features(void)
-{
-       xeno_arch_features_check(&xeno_featinfo);
-}
-static void xeno_init_arch_features(void)
-{
-       static pthread_once_t init_archfeat_once = PTHREAD_ONCE_INIT;
-       pthread_once(&init_archfeat_once, do_init_arch_features);
-}
-#else  /* !xeno_init_arch_features */
-#define xeno_init_arch_features()      do { } while (0)
-#endif /* !xeno_arch_features_check */
-
-int
-xeno_bind_skin_opt(unsigned skin_magic, const char *skin,
-                  const char *module, xnsighandler *handler)
+int 
+xeno_bind_skin_opt(unsigned skin_magic, const char *skin, const char *module)
 {
        sighandler_t old_sigill_handler;
        xnfeatinfo_t finfo;
@@ -148,11 +78,9 @@ xeno_bind_skin_opt(unsigned skin_magic, const char *skin,
                exit(EXIT_FAILURE);
        }
 
-       xnsig_handlers[muxid] = handler;
-
-       xeno_featinfo = finfo;
-
-       xeno_init_arch_features();
+#ifdef xeno_arch_features_check
+       xeno_arch_features_check();
+#endif /* xeno_arch_features_check */
 
        xeno_init_sem_heaps();
 
diff --git a/src/skins/native/init.c b/src/skins/native/init.c
index e85784a..28385a6 100644
--- a/src/skins/native/init.c
+++ b/src/skins/native/init.c
@@ -53,7 +53,7 @@ static __attribute__ ((constructor))
 void __init_xeno_interface(void)
 {
        __native_muxid =
-               xeno_bind_skin(XENO_SKIN_MAGIC, "native", "xeno_native", NULL);
+           xeno_bind_skin(XENO_SKIN_MAGIC, "native", "xeno_native");
 
        __native_muxid = __xn_mux_shifted_id(__native_muxid);
 }
diff --git a/src/skins/posix/init.c b/src/skins/posix/init.c
index 20ae526..7ef48cf 100644
--- a/src/skins/posix/init.c
+++ b/src/skins/posix/init.c
@@ -52,7 +52,8 @@ void __init_posix_interface(void)
 #endif /* !CONFIG_XENO_LIBS_DLOPEN */
        int muxid, err;
 
-       muxid = xeno_bind_skin(PSE51_SKIN_MAGIC, "POSIX", "xeno_posix", NULL);
+       muxid =
+           xeno_bind_skin(PSE51_SKIN_MAGIC, "POSIX", "xeno_posix");
 
 #ifdef XNARCH_HAVE_NONPRIV_TSC
        pse51_clock_init(muxid);
diff --git a/src/skins/psos+/init.c b/src/skins/psos+/init.c
index 43ddf4c..978a4f1 100644
--- a/src/skins/psos+/init.c
+++ b/src/skins/psos+/init.c
@@ -31,8 +31,7 @@ void __init_xeno_interface(void)
 {
        u_long err, tid;
 
-       __psos_muxid = xeno_bind_skin(PSOS_SKIN_MAGIC,
-                                     "psos", "xeno_psos", NULL);
+       __psos_muxid = xeno_bind_skin(PSOS_SKIN_MAGIC, "psos", "xeno_psos");
 
        err = XENOMAI_SYSCALL2(__xn_sys_info, __psos_muxid, &__psos_sysinfo);
 
diff --git a/src/skins/rtdm/init.c b/src/skins/rtdm/init.c
index f0ff085..dbbcbb1 100644
--- a/src/skins/rtdm/init.c
+++ b/src/skins/rtdm/init.c
@@ -33,8 +33,7 @@ void __init_rtdm_interface(void)
           device or socket. */
 
        __rtdm_muxid =
-               xeno_bind_skin_opt(RTDM_SKIN_MAGIC,
-                                  "rtdm", "xeno_rtdm", NULL);
+               xeno_bind_skin_opt(RTDM_SKIN_MAGIC, "rtdm", "xeno_rtdm");
        __rtdm_muxid = __xn_mux_shifted_id(__rtdm_muxid);
 
 }
diff --git a/src/skins/uitron/init.c b/src/skins/uitron/init.c
index 066c72a..a6cc77f 100644
--- a/src/skins/uitron/init.c
+++ b/src/skins/uitron/init.c
@@ -30,9 +30,7 @@ void __init_xeno_interface(void)
        T_CTSK pk_ctsk;
        ER err;
 
-       __uitron_muxid = xeno_bind_skin(uITRON_SKIN_MAGIC,
-                                       "uitron", "xeno_uitron", NULL);
-
+       __uitron_muxid = xeno_bind_skin(uITRON_SKIN_MAGIC, "uitron", 
"xeno_uitron");
        __uitron_muxid = __xn_mux_shifted_id(__uitron_muxid);
 
        /* Shadow the main thread. mlock the whole memory for the time
diff --git a/src/skins/vrtx/init.c b/src/skins/vrtx/init.c
index e119867..8a81660 100644
--- a/src/skins/vrtx/init.c
+++ b/src/skins/vrtx/init.c
@@ -52,6 +52,6 @@ static __attribute__ ((constructor))
 void __init_xeno_interface(void)
 {
        __vrtx_muxid =
-               xeno_bind_skin(VRTX_SKIN_MAGIC, "vrtx", "xeno_vrtx", NULL);
+           xeno_bind_skin(VRTX_SKIN_MAGIC, "vrtx", "xeno_vrtx");
        __vrtx_muxid = __xn_mux_shifted_id(__vrtx_muxid);
 }
diff --git a/src/skins/vxworks/init.c b/src/skins/vxworks/init.c
index e274e02..181b575 100644
--- a/src/skins/vxworks/init.c
+++ b/src/skins/vxworks/init.c
@@ -52,6 +52,6 @@ static __attribute__ ((constructor))
 void __init_xeno_interface(void)
 {
        __vxworks_muxid = xeno_bind_skin(VXWORKS_SKIN_MAGIC,
-                                        "vxworks", "xeno_vxworks", NULL);
+                                        "vxworks", "xeno_vxworks");
        __vxworks_muxid = __xn_mux_shifted_id(__vxworks_muxid);
 }


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to