[Xenomai-git] Philippe Gerum : copperplate/heapobj: give unshadowed main thread a large wait_union

2015-06-29 Thread git repository hosting
Module: xenomai-3
Branch: master
Commit: 4f446a6eb7abd8b304944bc342507b7feb35acd3
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=4f446a6eb7abd8b304944bc342507b7feb35acd3

Author: Philippe Gerum 
Date:   Fri Jun 19 14:47:48 2015 +0200

copperplate/heapobj: give unshadowed main thread a large wait_union

---

 lib/copperplate/threadobj.c |   14 --
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/copperplate/threadobj.c b/lib/copperplate/threadobj.c
index 1b98fbf..88bb59e 100644
--- a/lib/copperplate/threadobj.c
+++ b/lib/copperplate/threadobj.c
@@ -44,6 +44,11 @@ union copperplate_wait_union {
struct eventobj_wait_struct eventobj_wait;
 };
 
+union main_wait_union {
+   union copperplate_wait_union copperplate_wait;
+   char untyped_wait[1024];
+};
+
 static void finalize_thread(void *p);
 
 static void set_global_priority(struct threadobj *thobj, int policy,
@@ -1697,10 +1702,15 @@ static inline int main_overlay(void)
/*
 * Make the main() context a basic yet complete thread object,
 * so that it may use any services which require the caller to
-* have a Copperplate TCB (e.g. all blocking services).
+* have a Copperplate TCB (e.g. all blocking services). We
+* allocate a wait union which should be sufficient for
+* calling any blocking service from any high-level API from
+* an unshadowed main thread. APIs might have other reasons
+* not to allow such call though, in which case they should
+* check explicitly for those conditions.
 */
tcb = __threadobj_alloc(sizeof(*tcb),
-   sizeof(union copperplate_wait_union),
+   sizeof(union main_wait_union),
0);
if (tcb == NULL)
panic("failed to allocate main tcb");


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git


[Xenomai-git] Philippe Gerum : copperplate/heapobj: give unshadowed main thread a large wait_union

2015-06-19 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 4f446a6eb7abd8b304944bc342507b7feb35acd3
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=4f446a6eb7abd8b304944bc342507b7feb35acd3

Author: Philippe Gerum 
Date:   Fri Jun 19 14:47:48 2015 +0200

copperplate/heapobj: give unshadowed main thread a large wait_union

---

 lib/copperplate/threadobj.c |   14 --
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/lib/copperplate/threadobj.c b/lib/copperplate/threadobj.c
index 1b98fbf..88bb59e 100644
--- a/lib/copperplate/threadobj.c
+++ b/lib/copperplate/threadobj.c
@@ -44,6 +44,11 @@ union copperplate_wait_union {
struct eventobj_wait_struct eventobj_wait;
 };
 
+union main_wait_union {
+   union copperplate_wait_union copperplate_wait;
+   char untyped_wait[1024];
+};
+
 static void finalize_thread(void *p);
 
 static void set_global_priority(struct threadobj *thobj, int policy,
@@ -1697,10 +1702,15 @@ static inline int main_overlay(void)
/*
 * Make the main() context a basic yet complete thread object,
 * so that it may use any services which require the caller to
-* have a Copperplate TCB (e.g. all blocking services).
+* have a Copperplate TCB (e.g. all blocking services). We
+* allocate a wait union which should be sufficient for
+* calling any blocking service from any high-level API from
+* an unshadowed main thread. APIs might have other reasons
+* not to allow such call though, in which case they should
+* check explicitly for those conditions.
 */
tcb = __threadobj_alloc(sizeof(*tcb),
-   sizeof(union copperplate_wait_union),
+   sizeof(union main_wait_union),
0);
if (tcb == NULL)
panic("failed to allocate main tcb");


___
Xenomai-git mailing list
Xenomai-git@xenomai.org
http://xenomai.org/mailman/listinfo/xenomai-git