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. Jan
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 \
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core