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