[Xenomai-git] Philippe Gerum : boilerplate, copperplate: fix syncluster with remote sync (pshared)

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

Author: Philippe Gerum r...@xenomai.org
Date:   Mon Jun  1 16:52:34 2015 +0200

boilerplate, copperplate: fix syncluster with remote sync (pshared)

---

 include/boilerplate/scope.h   |   26 
 include/copperplate/cluster.h |9 -
 include/copperplate/threadobj.h   |6 +--
 lib/boilerplate/hash.c|4 --
 lib/copperplate/cluster.c |   19 -
 lib/copperplate/heapobj-pshared.c |   79 +++--
 lib/copperplate/threadobj.c   |2 +-
 7 files changed, 80 insertions(+), 65 deletions(-)

diff --git a/include/boilerplate/scope.h b/include/boilerplate/scope.h
index 9e551ae..ae71063 100644
--- a/include/boilerplate/scope.h
+++ b/include/boilerplate/scope.h
@@ -31,10 +31,15 @@ extern void *__main_heap;
 
 int pshared_check(void *heap, void *addr);
 
-#define dref_type(t)   memoff_t
-#define __memoff(base, addr)   ((caddr_t)(addr) - (caddr_t)(base))
-#define __memptr(base, off)((caddr_t)(base) + (off))
-#define __memchk(base, addr)   pshared_check(base, addr)
+#define dref_type(t)   memoff_t
+
+#define __memoff(__base, __addr)   ((caddr_t)(__addr) - (caddr_t)(__base))
+#define __memptr(__base, __off)((caddr_t)(__base) + (__off))
+#define __memchk(__base, __addr)   pshared_check(__base, __addr)
+
+#define __moff(__p)__memoff(__main_heap, __p)
+#define __mptr(__off)  __memptr(__main_heap, __off)
+#define __mchk(__p)__memchk(__main_heap, __p)
 
 #define mutex_scope_attribute  PTHREAD_PROCESS_SHARED
 #define sem_scope_attribute1
@@ -47,10 +52,15 @@ int pshared_check(void *heap, void *addr);
 
 #define __main_heapNULL
 
-#define dref_type(t)   __typeof__(t)
-#define __memoff(base, addr)   (addr)
-#define __memptr(base, off)(off)
-#define __memchk(base, addr)   1
+#define dref_type(t)   __typeof__(t)
+
+#define __memoff(__base, __addr)   (__addr)
+#define __memptr(__base, __off)(__off)
+#define __memchk(__base, __addr)   1
+
+#define __moff(__p)(__p)
+#define __mptr(__off)  (__off)
+#define __mchk(__p)1
 
 #define mutex_scope_attribute  PTHREAD_PROCESS_PRIVATE
 #define sem_scope_attribute0
diff --git a/include/copperplate/cluster.h b/include/copperplate/cluster.h
index af7dfee..c29d6f2 100644
--- a/include/copperplate/cluster.h
+++ b/include/copperplate/cluster.h
@@ -155,7 +155,14 @@ pid_t pvclusterobj_cnode(const struct pvclusterobj *cobj)
 #endif /* !CONFIG_XENO_PSHARED */
 
 struct syncluster_wait_struct {
-   const char *name;
+   union {
+   struct {
+   dref_type(char *) name;
+   } shared;
+   struct {
+   const char *name;
+   } private;
+   };
 };
 
 #ifdef __cplusplus
diff --git a/include/copperplate/threadobj.h b/include/copperplate/threadobj.h
index edc4d6c..4562dcb 100644
--- a/include/copperplate/threadobj.h
+++ b/include/copperplate/threadobj.h
@@ -179,7 +179,7 @@ struct threadobj {
struct holder wait_link;
int wait_status;
int wait_prio;
-   void *wait_union;
+   dref_type(void *) wait_union;
size_t wait_size;
timer_t periodic_timer;
 
@@ -496,14 +496,14 @@ static inline int threadobj_get_errno(struct threadobj 
*thobj)
struct threadobj *__thobj = threadobj_current();\
assert(__thobj != NULL);\
assert(sizeof(typeof(T)) = __thobj-wait_size);\
-   __thobj-wait_union;\
+   (void *)__mptr(__thobj-wait_union);\
})
 
 #define threadobj_finish_wait()do { } while (0)
 
 static inline void *threadobj_get_wait(struct threadobj *thobj)
 {
-   return thobj-wait_union;
+   return __mptr(thobj-wait_union);
 }
 
 static inline const char *threadobj_get_name(struct threadobj *thobj)
diff --git a/lib/boilerplate/hash.c b/lib/boilerplate/hash.c
index 35fcf73..aa35fa4 100644
--- a/lib/boilerplate/hash.c
+++ b/lib/boilerplate/hash.c
@@ -44,10 +44,6 @@
c -= a; c -= b; c ^= (b15);   \
 }
 
-#define __moff(__p)__memoff(__main_heap, __p)
-#define __mptr(__p)__memptr(__main_heap, __p)
-#define __mchk(__p)__memchk(__main_heap, __p)
-
 static inline int store_key(struct hashobj *obj,
const void *key, size_t len,
const struct hash_operations *hops);
diff --git a/lib/copperplate/cluster.c b/lib/copperplate/cluster.c
index 7353aa8..9355d94 100644
--- a/lib/copperplate/cluster.c
+++ b/lib/copperplate/cluster.c
@@ -255,9 +255,8 @@ redo:
hobj = hash_search(main_catalog, name, strlen(name),
   

[Xenomai-git] Philippe Gerum : boilerplate, copperplate: fix syncluster with remote sync (pshared)

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

Author: Philippe Gerum r...@xenomai.org
Date:   Mon Jun  1 16:52:34 2015 +0200

boilerplate, copperplate: fix syncluster with remote sync (pshared)

---

 include/boilerplate/scope.h   |   26 
 include/copperplate/cluster.h |9 -
 include/copperplate/threadobj.h   |6 +--
 lib/boilerplate/hash.c|4 --
 lib/copperplate/cluster.c |   19 -
 lib/copperplate/heapobj-pshared.c |   79 +++--
 lib/copperplate/threadobj.c   |2 +-
 7 files changed, 80 insertions(+), 65 deletions(-)

diff --git a/include/boilerplate/scope.h b/include/boilerplate/scope.h
index 9e551ae..ae71063 100644
--- a/include/boilerplate/scope.h
+++ b/include/boilerplate/scope.h
@@ -31,10 +31,15 @@ extern void *__main_heap;
 
 int pshared_check(void *heap, void *addr);
 
-#define dref_type(t)   memoff_t
-#define __memoff(base, addr)   ((caddr_t)(addr) - (caddr_t)(base))
-#define __memptr(base, off)((caddr_t)(base) + (off))
-#define __memchk(base, addr)   pshared_check(base, addr)
+#define dref_type(t)   memoff_t
+
+#define __memoff(__base, __addr)   ((caddr_t)(__addr) - (caddr_t)(__base))
+#define __memptr(__base, __off)((caddr_t)(__base) + (__off))
+#define __memchk(__base, __addr)   pshared_check(__base, __addr)
+
+#define __moff(__p)__memoff(__main_heap, __p)
+#define __mptr(__off)  __memptr(__main_heap, __off)
+#define __mchk(__p)__memchk(__main_heap, __p)
 
 #define mutex_scope_attribute  PTHREAD_PROCESS_SHARED
 #define sem_scope_attribute1
@@ -47,10 +52,15 @@ int pshared_check(void *heap, void *addr);
 
 #define __main_heapNULL
 
-#define dref_type(t)   __typeof__(t)
-#define __memoff(base, addr)   (addr)
-#define __memptr(base, off)(off)
-#define __memchk(base, addr)   1
+#define dref_type(t)   __typeof__(t)
+
+#define __memoff(__base, __addr)   (__addr)
+#define __memptr(__base, __off)(__off)
+#define __memchk(__base, __addr)   1
+
+#define __moff(__p)(__p)
+#define __mptr(__off)  (__off)
+#define __mchk(__p)1
 
 #define mutex_scope_attribute  PTHREAD_PROCESS_PRIVATE
 #define sem_scope_attribute0
diff --git a/include/copperplate/cluster.h b/include/copperplate/cluster.h
index af7dfee..c29d6f2 100644
--- a/include/copperplate/cluster.h
+++ b/include/copperplate/cluster.h
@@ -155,7 +155,14 @@ pid_t pvclusterobj_cnode(const struct pvclusterobj *cobj)
 #endif /* !CONFIG_XENO_PSHARED */
 
 struct syncluster_wait_struct {
-   const char *name;
+   union {
+   struct {
+   dref_type(char *) name;
+   } shared;
+   struct {
+   const char *name;
+   } private;
+   };
 };
 
 #ifdef __cplusplus
diff --git a/include/copperplate/threadobj.h b/include/copperplate/threadobj.h
index edc4d6c..4562dcb 100644
--- a/include/copperplate/threadobj.h
+++ b/include/copperplate/threadobj.h
@@ -179,7 +179,7 @@ struct threadobj {
struct holder wait_link;
int wait_status;
int wait_prio;
-   void *wait_union;
+   dref_type(void *) wait_union;
size_t wait_size;
timer_t periodic_timer;
 
@@ -496,14 +496,14 @@ static inline int threadobj_get_errno(struct threadobj 
*thobj)
struct threadobj *__thobj = threadobj_current();\
assert(__thobj != NULL);\
assert(sizeof(typeof(T)) = __thobj-wait_size);\
-   __thobj-wait_union;\
+   (void *)__mptr(__thobj-wait_union);\
})
 
 #define threadobj_finish_wait()do { } while (0)
 
 static inline void *threadobj_get_wait(struct threadobj *thobj)
 {
-   return thobj-wait_union;
+   return __mptr(thobj-wait_union);
 }
 
 static inline const char *threadobj_get_name(struct threadobj *thobj)
diff --git a/lib/boilerplate/hash.c b/lib/boilerplate/hash.c
index 35fcf73..aa35fa4 100644
--- a/lib/boilerplate/hash.c
+++ b/lib/boilerplate/hash.c
@@ -44,10 +44,6 @@
c -= a; c -= b; c ^= (b15);   \
 }
 
-#define __moff(__p)__memoff(__main_heap, __p)
-#define __mptr(__p)__memptr(__main_heap, __p)
-#define __mchk(__p)__memchk(__main_heap, __p)
-
 static inline int store_key(struct hashobj *obj,
const void *key, size_t len,
const struct hash_operations *hops);
diff --git a/lib/copperplate/cluster.c b/lib/copperplate/cluster.c
index 7353aa8..9355d94 100644
--- a/lib/copperplate/cluster.c
+++ b/lib/copperplate/cluster.c
@@ -255,9 +255,8 @@ redo:
hobj = hash_search(main_catalog, name, strlen(name),
   hash_operations);