[Xenomai-git] Philippe Gerum : alchemy/buffer: fix for remote requests (pshared)

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

Author: Philippe Gerum 
Date:   Mon Jun  1 17:15:18 2015 +0200

alchemy/buffer: fix for remote requests (pshared)

---

 lib/alchemy/buffer.c |   14 --
 lib/alchemy/buffer.h |2 +-
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/lib/alchemy/buffer.c b/lib/alchemy/buffer.c
index ca4817e..d9d7c98 100644
--- a/lib/alchemy/buffer.c
+++ b/lib/alchemy/buffer.c
@@ -153,7 +153,7 @@ static void buffer_finalize(struct syncobj *sobj)
 
bcb = container_of(sobj, struct alchemy_buffer, sobj);
registry_destroy_file(&bcb->fsobj);
-   xnfree(bcb->buf);
+   xnfree(__mptr(bcb->buf));
xnfree(bcb);
 }
 fnref_register(libalchemy, buffer_finalize);
@@ -216,6 +216,7 @@ int rt_buffer_create(RT_BUFFER *bf, const char *name,
struct alchemy_buffer *bcb;
struct service svc;
int sobj_flags = 0;
+   void *buf;
int ret;
 
if (threadobj_irq_p())
@@ -232,12 +233,13 @@ int rt_buffer_create(RT_BUFFER *bf, const char *name,
goto fail;
}
 
-   bcb->buf = xnmalloc(bufsz);
-   if (bcb == NULL) {
+   buf = xnmalloc(bufsz);
+   if (buf == NULL) {
ret = __bt(-ENOMEM);
goto fail_bufalloc;
}
 
+   bcb->buf = __moff(buf);
generate_name(bcb->name, name, &buffer_namegen);
bcb->mode = mode;
bcb->bufsz = bufsz;
@@ -276,7 +278,7 @@ fail_register:
registry_destroy_file(&bcb->fsobj);
syncobj_uninit(&bcb->sobj);
 fail_syncinit:
-   xnfree(bcb->buf);
+   xnfree(buf);
 fail_bufalloc:
xnfree(bcb);
 fail:
@@ -500,7 +502,7 @@ redo:
n = bcb->bufsz - rdoff;
else
n = rbytes;
-   memcpy(p, bcb->buf + rdoff, n);
+   memcpy(p, __mptr(bcb->buf) + rdoff, n);
p += n;
rdoff = (rdoff + n) % bcb->bufsz;
rbytes -= n;
@@ -716,7 +718,7 @@ ssize_t rt_buffer_write_timed(RT_BUFFER *bf,
else
n = rbytes;
 
-   memcpy(bcb->buf + wroff, p, n);
+   memcpy(__mptr(bcb->buf) + wroff, p, n);
p += n;
wroff = (wroff + n) % bcb->bufsz;
rbytes -= n;
diff --git a/lib/alchemy/buffer.h b/lib/alchemy/buffer.h
index beb1f5b..3c99d0c 100644
--- a/lib/alchemy/buffer.h
+++ b/lib/alchemy/buffer.h
@@ -31,7 +31,7 @@ struct alchemy_buffer {
struct clusterobj cobj;
size_t bufsz;
int mode;
-   void *buf;
+   dref_type(void *) buf;
size_t rdoff;
size_t wroff;
size_t fillsz;


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


[Xenomai-git] Philippe Gerum : alchemy/buffer: fix for remote requests (pshared)

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

Author: Philippe Gerum 
Date:   Mon Jun  1 17:15:18 2015 +0200

alchemy/buffer: fix for remote requests (pshared)

---

 lib/alchemy/buffer.c |   14 --
 lib/alchemy/buffer.h |2 +-
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/lib/alchemy/buffer.c b/lib/alchemy/buffer.c
index ca4817e..d9d7c98 100644
--- a/lib/alchemy/buffer.c
+++ b/lib/alchemy/buffer.c
@@ -153,7 +153,7 @@ static void buffer_finalize(struct syncobj *sobj)
 
bcb = container_of(sobj, struct alchemy_buffer, sobj);
registry_destroy_file(&bcb->fsobj);
-   xnfree(bcb->buf);
+   xnfree(__mptr(bcb->buf));
xnfree(bcb);
 }
 fnref_register(libalchemy, buffer_finalize);
@@ -216,6 +216,7 @@ int rt_buffer_create(RT_BUFFER *bf, const char *name,
struct alchemy_buffer *bcb;
struct service svc;
int sobj_flags = 0;
+   void *buf;
int ret;
 
if (threadobj_irq_p())
@@ -232,12 +233,13 @@ int rt_buffer_create(RT_BUFFER *bf, const char *name,
goto fail;
}
 
-   bcb->buf = xnmalloc(bufsz);
-   if (bcb == NULL) {
+   buf = xnmalloc(bufsz);
+   if (buf == NULL) {
ret = __bt(-ENOMEM);
goto fail_bufalloc;
}
 
+   bcb->buf = __moff(buf);
generate_name(bcb->name, name, &buffer_namegen);
bcb->mode = mode;
bcb->bufsz = bufsz;
@@ -276,7 +278,7 @@ fail_register:
registry_destroy_file(&bcb->fsobj);
syncobj_uninit(&bcb->sobj);
 fail_syncinit:
-   xnfree(bcb->buf);
+   xnfree(buf);
 fail_bufalloc:
xnfree(bcb);
 fail:
@@ -500,7 +502,7 @@ redo:
n = bcb->bufsz - rdoff;
else
n = rbytes;
-   memcpy(p, bcb->buf + rdoff, n);
+   memcpy(p, __mptr(bcb->buf) + rdoff, n);
p += n;
rdoff = (rdoff + n) % bcb->bufsz;
rbytes -= n;
@@ -716,7 +718,7 @@ ssize_t rt_buffer_write_timed(RT_BUFFER *bf,
else
n = rbytes;
 
-   memcpy(bcb->buf + wroff, p, n);
+   memcpy(__mptr(bcb->buf) + wroff, p, n);
p += n;
wroff = (wroff + n) % bcb->bufsz;
rbytes -= n;
diff --git a/lib/alchemy/buffer.h b/lib/alchemy/buffer.h
index beb1f5b..3c99d0c 100644
--- a/lib/alchemy/buffer.h
+++ b/lib/alchemy/buffer.h
@@ -31,7 +31,7 @@ struct alchemy_buffer {
struct clusterobj cobj;
size_t bufsz;
int mode;
-   void *buf;
+   dref_type(void *) buf;
size_t rdoff;
size_t wroff;
size_t fillsz;


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