From: Philippe Gerum <rpm@xenomai.org>
To: Jan Kiszka <jan.kiszka@domain.hid>
Cc: xenomai-core <xenomai@xenomai.org>
Subject: [Xenomai-core] Re: [PATCH] refactor skin bind headers
Date: Tue, 15 Aug 2006 17:00:58 +0200 [thread overview]
Message-ID: <1155654058.4327.42.camel@domain.hid> (raw)
In-Reply-To: <44E1DC94.1070908@domain.hid>
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 <jan.kiszka@domain.hid>
> +
> + * 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 <jan.kiszka@domain.hid>
>
> * 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.
prev parent reply other threads:[~2006-08-15 15:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-15 14:39 [Xenomai-core] [PATCH] refactor skin bind headers Jan Kiszka
2006-08-15 15:00 ` Philippe Gerum [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1155654058.4327.42.camel@domain.hid \
--to=rpm@xenomai.org \
--cc=jan.kiszka@domain.hid \
--cc=xenomai@xenomai.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.