On Tue, 2006-08-15 at 16:39 +0200, Jan Kiszka wrote:
> As discussed in the buildbot thread, here comes a second try to refactor
> the skin binding headers. Basically, nucleus/bind.h is split up and
> moved to asm-generic/bits, skins are updated appropriately.
> 
> Builds fine here with both gcc-3.3 and gcc-4.1 over x86.
> 

Merged, thanks.

> Jan
> plain text document attachment (refactor-skin-bind-headers.patch)
> Index: ChangeLog
> ===================================================================
> --- ChangeLog (revision 1440)
> +++ ChangeLog (working copy)
> @@ -1,3 +1,9 @@
> +2006-08-15  Jan Kiszka  <[EMAIL PROTECTED]>
> +
> +     * include/asm-generic/bits/{bind.h,mlock_alert.h},
> +     include/<skin>/syscall.h, src/skins/<skin>/init.c: Split up
> +     include/nucleus/bind.h and move the fragments to asm-generic/bits.
> +
>  2006-08-14  Jan Kiszka  <[EMAIL PROTECTED]>
>  
>       * ksrc/drivers/{serial,Kconfig,Config.in,Makefile},
> Index: src/skins/rtai/init.c
> ===================================================================
> --- src/skins/rtai/init.c     (revision 1440)
> +++ src/skins/rtai/init.c     (working copy)
> @@ -20,6 +20,8 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <rtai/syscall.h>
> +#include <asm-generic/bits/bind.h>
> +#include <asm-generic/bits/mlock_alert.h>
>  
>  int __rtai_muxid = -1;
>  
> Index: src/skins/posix/init.c
> ===================================================================
> --- src/skins/posix/init.c    (revision 1440)
> +++ src/skins/posix/init.c    (working copy)
> @@ -26,6 +26,8 @@
>  #include <posix/posix.h>
>  #include <posix/syscall.h>
>  #include <rtdm/syscall.h>
> +#include <asm-generic/bits/bind.h>
> +#include <asm-generic/bits/mlock_alert.h>
>  
>  int __pse51_muxid = -1;
>  int __rtdm_muxid = -1;
> Index: src/skins/vxworks/init.c
> ===================================================================
> --- src/skins/vxworks/init.c  (revision 1440)
> +++ src/skins/vxworks/init.c  (working copy)
> @@ -23,6 +23,8 @@
>  #include <stdlib.h>
>  #include <pthread.h>
>  #include <vxworks/vxworks.h>
> +#include <asm-generic/bits/bind.h>
> +#include <asm-generic/bits/mlock_alert.h>
>  
>  pthread_key_t __vxworks_tskey;
>  
> Index: src/skins/vrtx/init.c
> ===================================================================
> --- src/skins/vrtx/init.c     (revision 1440)
> +++ src/skins/vrtx/init.c     (working copy)
> @@ -23,6 +23,8 @@
>  #include <stdlib.h>
>  #include <pthread.h>
>  #include <vrtx/vrtx.h>
> +#include <asm-generic/bits/bind.h>
> +#include <asm-generic/bits/mlock_alert.h>
>  
>  pthread_key_t __vrtx_tskey;
>  
> Index: src/skins/native/init.c
> ===================================================================
> --- src/skins/native/init.c   (revision 1440)
> +++ src/skins/native/init.c   (working copy)
> @@ -24,6 +24,8 @@
>  #include <pthread.h>
>  #include <native/syscall.h>
>  #include <native/task.h>
> +#include <asm-generic/bits/bind.h>
> +#include <asm-generic/bits/mlock_alert.h>
>  
>  pthread_key_t __native_tskey;
>  
> Index: src/skins/rtdm/init.c
> ===================================================================
> --- src/skins/rtdm/init.c     (revision 1440)
> +++ src/skins/rtdm/init.c     (working copy)
> @@ -21,6 +21,7 @@
>  #include <stdlib.h>
>  #include <string.h>
>  #include <rtdm/syscall.h>
> +#include <asm-generic/bits/bind.h>
>  
>  int __rtdm_muxid = -1;
>  
> Index: include/vxworks/syscall.h
> ===================================================================
> --- include/vxworks/syscall.h (revision 1440)
> +++ include/vxworks/syscall.h (working copy)
> @@ -91,10 +91,6 @@ void wind_syscall_cleanup(void);
>  }
>  #endif
>  
> -#elif !defined(__XENO_SIM__)
> -
> -#include <nucleus/bind.h>
> -
>  #endif /* __KERNEL__ */
>  
>  #endif /* _XENO_VXWORKS_SYSCALL_H */
> Index: include/native/syscall.h
> ===================================================================
> --- include/native/syscall.h  (revision 1440)
> +++ include/native/syscall.h  (working copy)
> @@ -143,10 +143,6 @@ void __native_syscall_cleanup(void);
>  }
>  #endif
>  
> -#elif !defined(__XENO_SIM__)
> -
> -#include <nucleus/bind.h>
> -
>  #endif /* __KERNEL__ */
>  
>  #endif /* _NATIVE_SYSCALL_H */
> Index: include/asm-generic/bits/Makefile.in
> ===================================================================
> --- include/asm-generic/bits/Makefile.in      (revision 1440)
> +++ include/asm-generic/bits/Makefile.in      (working copy)
> @@ -216,7 +216,13 @@ target_alias = @target_alias@
>  target_cpu = @target_cpu@
>  target_os = @target_os@
>  target_vendor = @target_vendor@
> -include_HEADERS = pod.h intr.h heap.h
> +include_HEADERS = \
> +     bind.h \
> +     heap.h \
> +     intr.h \
> +     mlock_alert.h \
> +     pod.h
> +
>  all: all-am
>  
>  .SUFFIXES:
> Index: include/asm-generic/bits/bind.h
> ===================================================================
> --- include/asm-generic/bits/bind.h   (revision 1440)
> +++ include/asm-generic/bits/bind.h   (working copy)
> @@ -1,38 +1,14 @@
> -#ifndef _XENO_NUCLEUS_BIND_H
> -#define _XENO_NUCLEUS_BIND_H
> +#ifndef _XENO_ASM_GENERIC_BITS_BIND_H
> +#define _XENO_ASM_GENERIC_BITS_BIND_H
>  
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
>  #include <errno.h>
>  #include <signal.h>
> -#include <pthread.h>
>  #include <asm/xenomai/syscall.h>
>  
> -__attribute__ ((weak))
> -int xeno_sigxcpu_no_mlock = 1;
> -
> -static 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);
>  
>  static inline int
>  xeno_bind_skin(unsigned skin_magic, const char *skin, const char *module)
> @@ -132,4 +108,4 @@ xeno_bind_skin_opt(unsigned skin_magic, 
>       return __xn_mux_shifted_id(muxid);
>  }
>  
> -#endif /* _XENO_NUCLEUS_BIND_H */
> +#endif /* _XENO_ASM_GENERIC_BITS_BIND_H */
> Index: include/asm-generic/bits/mlock_alert.h
> ===================================================================
> --- include/asm-generic/bits/mlock_alert.h    (revision 0)
> +++ include/asm-generic/bits/mlock_alert.h    (revision 0)
> @@ -0,0 +1,35 @@
> +#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>
> +
> +__attribute__ ((weak))
> +int xeno_sigxcpu_no_mlock = 1;
> +
> +__attribute__ ((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);
> +}
> +
> +#endif /* _XENO_ASM_GENERIC_BITS_MLOCK_ALERT_H */
> Index: include/asm-generic/bits/Makefile.am
> ===================================================================
> --- include/asm-generic/bits/Makefile.am      (revision 1440)
> +++ include/asm-generic/bits/Makefile.am      (working copy)
> @@ -1,3 +1,8 @@
>  includedir = $(prefix)/include/asm-generic/bits
>  
> -include_HEADERS = pod.h intr.h heap.h
> +include_HEADERS = \
> +     bind.h \
> +     heap.h \
> +     intr.h \
> +     mlock_alert.h \
> +     pod.h
> Index: include/rtai/syscall.h
> ===================================================================
> --- include/rtai/syscall.h    (revision 1440)
> +++ include/rtai/syscall.h    (working copy)
> @@ -31,10 +31,6 @@ int __rtai_syscall_init(void);
>  
>  void __rtai_syscall_cleanup(void);
>  
> -#elif !defined(__XENO_SIM__)
> -
> -#include <nucleus/bind.h>
> -
>  #endif /* __KERNEL__ */
>  
>  #endif /* !_RTAI_SYSCALL_H */
> Index: include/posix/syscall.h
> ===================================================================
> --- include/posix/syscall.h   (revision 1440)
> +++ include/posix/syscall.h   (working copy)
> @@ -114,10 +114,6 @@ void pse51_syscall_cleanup(void);
>  }
>  #endif
>  
> -#elif !defined(__XENO_SIM__)
> -
> -#include <nucleus/bind.h>
> -
>  #endif /* __KERNEL__ */
>  
>  #endif /* _POSIX_SYSCALL_H */
> Index: include/vrtx/syscall.h
> ===================================================================
> --- include/vrtx/syscall.h    (revision 1440)
> +++ include/vrtx/syscall.h    (working copy)
> @@ -103,10 +103,6 @@ void vrtxsys_cleanup(void);
>  }
>  #endif
>  
> -#elif !defined(__XENO_SIM__)
> -
> -#include <nucleus/bind.h>
> -
>  #endif /* __KERNEL__ */
>  
>  #endif /* _XENO_VRTX_SYSCALL_H */
> Index: include/rtdm/syscall.h
> ===================================================================
> --- include/rtdm/syscall.h    (revision 1440)
> +++ include/rtdm/syscall.h    (working copy)
> @@ -55,10 +55,6 @@ static inline void rtdm_syscall_cleanup(
>  }
>  #endif
>  
> -#elif !defined(__XENO_SIM__)
> -
> -#include <nucleus/bind.h>
> -
>  #endif /* __KERNEL__ */
>  
>  #endif /* _RTDM_SYSCALL_H */
> Index: include/nucleus/Makefile.in
> ===================================================================
> --- include/nucleus/Makefile.in       (revision 1440)
> +++ include/nucleus/Makefile.in       (working copy)
> @@ -219,7 +219,6 @@ target_vendor = @target_vendor@
>  include_HEADERS = \
>       assert.h \
>       bheap.h \
> -     bind.h \
>       compiler.h \
>       core.h \
>       heap.h \
> Index: include/nucleus/bind.h
> ===================================================================
> --- include/nucleus/bind.h    (revision 1440)
> +++ include/nucleus/bind.h    (working copy)
> @@ -1,135 +0,0 @@
> -#ifndef _XENO_NUCLEUS_BIND_H
> -#define _XENO_NUCLEUS_BIND_H
> -
> -#include <stdio.h>
> -#include <stdlib.h>
> -#include <string.h>
> -#include <errno.h>
> -#include <signal.h>
> -#include <pthread.h>
> -#include <asm/xenomai/syscall.h>
> -
> -__attribute__ ((weak))
> -int xeno_sigxcpu_no_mlock = 1;
> -
> -static 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);
> -}
> -
> -static inline int
> -xeno_bind_skin(unsigned skin_magic, const char *skin, const char *module)
> -{
> -     struct sigaction sa;
> -     xnfeatinfo_t finfo;
> -     int muxid;
> -
> -#ifdef xeno_arch_features_check
> -     xeno_arch_features_check();
> -#endif /* xeno_arch_features_check */
> -
> -     muxid = XENOMAI_SYSBIND(skin_magic,
> -                             XENOMAI_FEAT_DEP, XENOMAI_ABI_REV, &finfo);
> -     switch (muxid) {
> -     case -EINVAL:
> -
> -             fprintf(stderr, "Xenomai: incompatible feature set\n");
> -             fprintf(stderr,
> -                     "(required=\"%s\", present=\"%s\", missing=\"%s\").\n",
> -                     finfo.feat_man_s, finfo.feat_all_s, finfo.feat_mis_s);
> -             exit(1);
> -
> -     case -ENOEXEC:
> -
> -             fprintf(stderr, "Xenomai: incompatible ABI revision level\n");
> -             fprintf(stderr, "(needed=%lu, current=%lu).\n",
> -                     XENOMAI_ABI_REV, finfo.abirev);
> -             exit(1);
> -
> -     case -ENOSYS:
> -     case -ESRCH:
> -
> -             fprintf(stderr,
> -                     "Xenomai: %s skin or CONFIG_XENO_OPT_PERVASIVE 
> disabled.\n"
> -                     "(modprobe %s?)\n", skin, module);
> -             exit(1);
> -     }
> -
> -     if (muxid < 0) {
> -             fprintf(stderr, "Xenomai: binding failed: %s.\n",
> -                     strerror(-muxid));
> -             exit(1);
> -     }
> -
> -     /* Install a SIGXCPU handler to intercept alerts about unlocked
> -        process memory. */
> -
> -     sa.sa_handler = &xeno_handle_mlock_alert;
> -     sigemptyset(&sa.sa_mask);
> -     sa.sa_flags = 0;
> -     sigaction(SIGXCPU, &sa, NULL);
> -
> -     return __xn_mux_shifted_id(muxid);
> -}
> -
> -static inline int
> -xeno_bind_skin_opt(unsigned skin_magic, const char *skin, const char *module)
> -{
> -     xnfeatinfo_t finfo;
> -     int muxid;
> -
> -#ifdef xeno_arch_features_check
> -     xeno_arch_features_check();
> -#endif /* xeno_arch_features_check */
> -
> -     muxid = XENOMAI_SYSBIND(skin_magic,
> -                             XENOMAI_FEAT_DEP, XENOMAI_ABI_REV, &finfo);
> -     switch (muxid) {
> -     case -EINVAL:
> -
> -             fprintf(stderr, "Xenomai: incompatible feature set\n");
> -             fprintf(stderr,
> -                     "(required=\"%s\", present=\"%s\", missing=\"%s\").\n",
> -                     finfo.feat_man_s, finfo.feat_all_s, finfo.feat_mis_s);
> -             exit(1);
> -
> -     case -ENOEXEC:
> -
> -             fprintf(stderr, "Xenomai: incompatible ABI revision level\n");
> -             fprintf(stderr, "(needed=%lu, current=%lu).\n",
> -                     XENOMAI_ABI_REV, finfo.abirev);
> -             exit(1);
> -
> -     case -ENOSYS:
> -     case -ESRCH:
> -
> -             return -1;
> -     }
> -
> -     if (muxid < 0) {
> -             fprintf(stderr, "Xenomai: binding failed: %s.\n",
> -                     strerror(-muxid));
> -             exit(1);
> -     }
> -
> -     return __xn_mux_shifted_id(muxid);
> -}
> -
> -#endif /* _XENO_NUCLEUS_BIND_H */
> Index: include/nucleus/Makefile.am
> ===================================================================
> --- include/nucleus/Makefile.am       (revision 1440)
> +++ include/nucleus/Makefile.am       (working copy)
> @@ -3,7 +3,6 @@ includedir = $(prefix)/include/nucleus
>  include_HEADERS = \
>       assert.h \
>       bheap.h \
> -     bind.h \
>       compiler.h \
>       core.h \
>       heap.h \
-- 
Philippe.



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

Reply via email to