[Xenomai-git] Philippe Gerum : include/asm-generic/stack.h: stack-related helpers belong to userland
Module: xenomai-forge Branch: master Commit: a2ea259396c85cefd7aca10759f8b50530ba7613 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=a2ea259396c85cefd7aca10759f8b50530ba7613 Author: Philippe Gerum r...@xenomai.org Date: Wed Jul 3 16:09:33 2013 +0200 include/asm-generic/stack.h: stack-related helpers belong to userland --- include/cobalt/asm-generic/Makefile.am |1 - include/cobalt/asm-generic/Makefile.in |1 - include/cobalt/asm-generic/stack.h | 34 lib/cobalt/init.c | 15 ++--- lib/cobalt/internal.c | 18 lib/cobalt/internal.h |5 +++- lib/cobalt/printf.c|1 - lib/cobalt/thread.c| 13 +-- testsuite/cyclic/cyclictest.c |2 +- testsuite/switchtest/Makefile.am |6 ++-- testsuite/switchtest/Makefile.in |4 +- testsuite/switchtest/switchtest.c | 13 ++- testsuite/unit/cond-torture.c |4 +- testsuite/unit/mutex-torture.c |8 ++ testsuite/unit/sched-tp.c |3 +- 15 files changed, 51 insertions(+), 77 deletions(-) diff --git a/include/cobalt/asm-generic/Makefile.am b/include/cobalt/asm-generic/Makefile.am index cff1c94..4a57452 100644 --- a/include/cobalt/asm-generic/Makefile.am +++ b/include/cobalt/asm-generic/Makefile.am @@ -6,7 +6,6 @@ includesub_HEADERS =\ machine.h \ mayday.h\ pci_ids.h \ - stack.h \ syscall.h \ thread.h\ wrappers.h diff --git a/include/cobalt/asm-generic/Makefile.in b/include/cobalt/asm-generic/Makefile.in index 7655bb6..2fdc584 100644 --- a/include/cobalt/asm-generic/Makefile.in +++ b/include/cobalt/asm-generic/Makefile.in @@ -317,7 +317,6 @@ includesub_HEADERS = \ machine.h \ mayday.h\ pci_ids.h \ - stack.h \ syscall.h \ thread.h\ wrappers.h diff --git a/include/cobalt/asm-generic/stack.h b/include/cobalt/asm-generic/stack.h deleted file mode 100644 index f863df6..000 --- a/include/cobalt/asm-generic/stack.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef STACKSIZE_H -#define STACKSIZE_H - -#include stdint.h -#include limits.h -#include unistd.h -#include pthread.h - -#ifdef __cplusplus -extern C { -#endif /* __cplusplus */ - -static inline unsigned cobalt_get_stacksize(unsigned size) -{ - static const unsigned default_size = __WORDSIZE * 1024; - static unsigned min_size; - if (!min_size) - min_size = PTHREAD_STACK_MIN + getpagesize(); - - if (!size) - size = default_size; - if (size min_size) - size = min_size; - - return size; -} - -void cobalt_prefault_stack(void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* STACKSIZE_H */ diff --git a/lib/cobalt/init.c b/lib/cobalt/init.c index 66c075d..f13f7e7 100644 --- a/lib/cobalt/init.c +++ b/lib/cobalt/init.c @@ -25,7 +25,6 @@ #include signal.h #include limits.h #include unistd.h -#include asm-generic/xenomai/stack.h #include cobalt/uapi/sys/heap.h #include cobalt/uapi/rtdm/syscall.h #include cobalt/ticks.h @@ -38,14 +37,14 @@ int __cobalt_muxid = -1; struct sigaction __cobalt_orig_sigdebug; +pthread_t __cobalt_main_tid; + int __rtdm_muxid = -1; int __rtdm_fd_start = INT_MAX; static int fork_handler_registered; -static pthread_t main_tid; - static void sigill_handler(int sig) { const char m[] = Xenomai disabled in kernel?\n; @@ -53,14 +52,6 @@ static void sigill_handler(int sig) exit(EXIT_FAILURE); } -void cobalt_prefault_stack(void) -{ - if (pthread_self() == main_tid) { - char stk[cobalt_get_stacksize(1)]; - stk[0] = stk[sizeof(stk) - 1] = 0xA5; - } -} - static int bind_interface(void) { sighandler_t old_sigill_handler; @@ -124,7 +115,7 @@ static int bind_interface(void) cobalt_init_current_keys(); - main_tid = pthread_self(); + __cobalt_main_tid = pthread_self(); cobalt_ticks_init(sysinfo.clockfreq); diff --git a/lib/cobalt/internal.c b/lib/cobalt/internal.c index c9b1bdd..5b2513f 100644 --- a/lib/cobalt/internal.c +++ b/lib/cobalt/internal.c @@ -23,6 +23,7 @@ #include sys/types.h #include stddef.h #include stdlib.h +#include limits.h #include stdio.h #include unistd.h #include signal.h @@ -59,6 +60,23 @@ void ___cobalt_prefault(void *p, size_t len) } while (_p end); } +size_t cobalt_get_stacksize(size_t size) +{ + static const size_t default_size = PTHREAD_STACK_MIN * 4; + static size_t min_size; + + if (min_size == 0) + min_size = PTHREAD_STACK_MIN + getpagesize(); + + if (size == 0) + size = default_size; + + if (size min_size) +
[Xenomai-git] Philippe Gerum : include/asm-generic/stack.h: stack-related helpers belong to userland
Module: xenomai-forge Branch: next Commit: a2ea259396c85cefd7aca10759f8b50530ba7613 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=a2ea259396c85cefd7aca10759f8b50530ba7613 Author: Philippe Gerum r...@xenomai.org Date: Wed Jul 3 16:09:33 2013 +0200 include/asm-generic/stack.h: stack-related helpers belong to userland --- include/cobalt/asm-generic/Makefile.am |1 - include/cobalt/asm-generic/Makefile.in |1 - include/cobalt/asm-generic/stack.h | 34 lib/cobalt/init.c | 15 ++--- lib/cobalt/internal.c | 18 lib/cobalt/internal.h |5 +++- lib/cobalt/printf.c|1 - lib/cobalt/thread.c| 13 +-- testsuite/cyclic/cyclictest.c |2 +- testsuite/switchtest/Makefile.am |6 ++-- testsuite/switchtest/Makefile.in |4 +- testsuite/switchtest/switchtest.c | 13 ++- testsuite/unit/cond-torture.c |4 +- testsuite/unit/mutex-torture.c |8 ++ testsuite/unit/sched-tp.c |3 +- 15 files changed, 51 insertions(+), 77 deletions(-) diff --git a/include/cobalt/asm-generic/Makefile.am b/include/cobalt/asm-generic/Makefile.am index cff1c94..4a57452 100644 --- a/include/cobalt/asm-generic/Makefile.am +++ b/include/cobalt/asm-generic/Makefile.am @@ -6,7 +6,6 @@ includesub_HEADERS =\ machine.h \ mayday.h\ pci_ids.h \ - stack.h \ syscall.h \ thread.h\ wrappers.h diff --git a/include/cobalt/asm-generic/Makefile.in b/include/cobalt/asm-generic/Makefile.in index 7655bb6..2fdc584 100644 --- a/include/cobalt/asm-generic/Makefile.in +++ b/include/cobalt/asm-generic/Makefile.in @@ -317,7 +317,6 @@ includesub_HEADERS = \ machine.h \ mayday.h\ pci_ids.h \ - stack.h \ syscall.h \ thread.h\ wrappers.h diff --git a/include/cobalt/asm-generic/stack.h b/include/cobalt/asm-generic/stack.h deleted file mode 100644 index f863df6..000 --- a/include/cobalt/asm-generic/stack.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef STACKSIZE_H -#define STACKSIZE_H - -#include stdint.h -#include limits.h -#include unistd.h -#include pthread.h - -#ifdef __cplusplus -extern C { -#endif /* __cplusplus */ - -static inline unsigned cobalt_get_stacksize(unsigned size) -{ - static const unsigned default_size = __WORDSIZE * 1024; - static unsigned min_size; - if (!min_size) - min_size = PTHREAD_STACK_MIN + getpagesize(); - - if (!size) - size = default_size; - if (size min_size) - size = min_size; - - return size; -} - -void cobalt_prefault_stack(void); - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -#endif /* STACKSIZE_H */ diff --git a/lib/cobalt/init.c b/lib/cobalt/init.c index 66c075d..f13f7e7 100644 --- a/lib/cobalt/init.c +++ b/lib/cobalt/init.c @@ -25,7 +25,6 @@ #include signal.h #include limits.h #include unistd.h -#include asm-generic/xenomai/stack.h #include cobalt/uapi/sys/heap.h #include cobalt/uapi/rtdm/syscall.h #include cobalt/ticks.h @@ -38,14 +37,14 @@ int __cobalt_muxid = -1; struct sigaction __cobalt_orig_sigdebug; +pthread_t __cobalt_main_tid; + int __rtdm_muxid = -1; int __rtdm_fd_start = INT_MAX; static int fork_handler_registered; -static pthread_t main_tid; - static void sigill_handler(int sig) { const char m[] = Xenomai disabled in kernel?\n; @@ -53,14 +52,6 @@ static void sigill_handler(int sig) exit(EXIT_FAILURE); } -void cobalt_prefault_stack(void) -{ - if (pthread_self() == main_tid) { - char stk[cobalt_get_stacksize(1)]; - stk[0] = stk[sizeof(stk) - 1] = 0xA5; - } -} - static int bind_interface(void) { sighandler_t old_sigill_handler; @@ -124,7 +115,7 @@ static int bind_interface(void) cobalt_init_current_keys(); - main_tid = pthread_self(); + __cobalt_main_tid = pthread_self(); cobalt_ticks_init(sysinfo.clockfreq); diff --git a/lib/cobalt/internal.c b/lib/cobalt/internal.c index c9b1bdd..5b2513f 100644 --- a/lib/cobalt/internal.c +++ b/lib/cobalt/internal.c @@ -23,6 +23,7 @@ #include sys/types.h #include stddef.h #include stdlib.h +#include limits.h #include stdio.h #include unistd.h #include signal.h @@ -59,6 +60,23 @@ void ___cobalt_prefault(void *p, size_t len) } while (_p end); } +size_t cobalt_get_stacksize(size_t size) +{ + static const size_t default_size = PTHREAD_STACK_MIN * 4; + static size_t min_size; + + if (min_size == 0) + min_size = PTHREAD_STACK_MIN + getpagesize(); + + if (size == 0) + size = default_size; + + if (size min_size) + size