[Xenomai-git] Philippe Gerum : include/asm-generic/stack.h: stack-related helpers belong to userland

2013-07-08 Thread git repository hosting
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

2013-07-06 Thread git repository hosting
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