[Xenomai-git] Philippe Gerum : pipe-test

2014-10-30 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 6ff16413e32afd5b0eafda40cff07f09f7af37a7
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=6ff16413e32afd5b0eafda40cff07f09f7af37a7

Author: Philippe Gerum r...@xenomai.org
Date:   Thu Oct 30 14:34:15 2014 +0100

pipe-test

---

 lib/alchemy/testsuite/pipe-1.c |  101 
 1 file changed, 101 insertions(+)

diff --git a/lib/alchemy/testsuite/pipe-1.c b/lib/alchemy/testsuite/pipe-1.c
new file mode 100644
index 000..3b9b183
--- /dev/null
+++ b/lib/alchemy/testsuite/pipe-1.c
@@ -0,0 +1,101 @@
+#include stdio.h
+#include stdlib.h
+#include fcntl.h
+#include copperplate/traceobj.h
+#include alchemy/task.h
+#include alchemy/pipe.h
+
+static struct traceobj trobj;
+
+static RT_TASK t_real;
+
+static RT_PIPE pipe;
+
+static pthread_t t_reg;
+
+static int minor;
+
+struct pipe_message {
+   int value;
+};
+
+static void realtime_task(void *arg)
+{
+   struct pipe_message m;
+   int ret, seq;
+
+   traceobj_enter(trobj);
+
+   ret = rt_pipe_bind(pipe, pipe, TM_INFINITE);
+   traceobj_assert(trobj, ret == 0);
+
+   while (seq  16) {
+   ret = rt_pipe_read(pipe, m, sizeof(m), TM_INFINITE);
+   traceobj_assert(trobj, ret == sizeof(m));
+   traceobj_assert(trobj, m.value == seq);
+   ret = rt_pipe_write(pipe, m, sizeof(m), P_NORMAL);
+   traceobj_assert(trobj, ret == sizeof(m));
+   seq = m.value++;
+   }
+
+   pthread_cancel(t_reg);
+
+   traceobj_exit(trobj);
+}
+
+static void *regular_thread(void *arg)
+{
+   struct pipe_message m;
+   int fd, seq = 0;
+   ssize_t ret;
+   char *rtp;
+
+   asprintf(rtp, /dev/rtp%d, minor);
+
+   fd = open(rtp, O_RDWR);
+   free(rtp);
+   traceobj_assert(trobj, fd = 0);
+
+   for (;;) {
+   printf(sending message #%d\n, seq);
+   m.value = seq++;
+   ret = write(fd, m, sizeof(m));
+   traceobj_assert(trobj, ret == sizeof(m));
+   ret = read(fd, m, sizeof(m));
+   traceobj_assert(trobj, ret == sizeof(m));
+   printf(read %d vs %d\n, m.value, seq);
+   traceobj_assert(trobj, m.value == seq);
+   }
+
+   return NULL;
+}
+
+int main(int argc, char *const argv[])
+{
+   int ret;
+
+   traceobj_init(trobj, argv[0], 0);
+
+   ret = rt_pipe_create(pipe, pipe, P_MINOR_AUTO, 0);
+   traceobj_assert(trobj, ret = 0);
+
+   ret = rt_pipe_delete(pipe);
+   traceobj_assert(trobj, ret == 0);
+
+   ret = rt_task_create(t_real, realtime, 0,  10, 0);
+   traceobj_assert(trobj, ret == 0);
+
+   ret = rt_task_start(t_real, realtime_task, NULL);
+   traceobj_assert(trobj, ret == 0);
+
+   ret = rt_pipe_create(pipe, pipe, P_MINOR_AUTO, 16384);
+   traceobj_assert(trobj, ret = 0);
+   minor = ret;
+
+   ret = pthread_create(t_reg, NULL, regular_thread, NULL);
+   traceobj_assert(trobj, ret == 0);
+
+   traceobj_join(trobj);
+
+   exit(0);
+}


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


[Xenomai-git] Philippe Gerum : pipe-test

2014-10-30 Thread git repository hosting
Module: xenomai-3
Branch: next
Commit: 54aaa5d673757d93ae7f8ed53d7006f279f52916
URL:
http://git.xenomai.org/?p=xenomai-3.git;a=commit;h=54aaa5d673757d93ae7f8ed53d7006f279f52916

Author: Philippe Gerum r...@xenomai.org
Date:   Thu Oct 30 14:34:27 2014 +0100

pipe-test

---

 lib/alchemy/testsuite/Makefile |   43 
 1 file changed, 22 insertions(+), 21 deletions(-)

diff --git a/lib/alchemy/testsuite/Makefile b/lib/alchemy/testsuite/Makefile
index 1014741..98de605 100644
--- a/lib/alchemy/testsuite/Makefile
+++ b/lib/alchemy/testsuite/Makefile
@@ -11,27 +11,28 @@ ifeq ($(prefix),)
 $(error Please add xenomai-install-path/bin to your PATH variable or specify 
DESTDIR)
 endif
 
-TESTS :=   \
-   task-1  \
-   task-2  \
-   task-3  \
-   task-4  \
-   task-5  \
-   task-6  \
-   task-7  \
-   task-8  \
-   task-9  \
-   task-10 \
-   mq-1\
-   mq-2\
-   mq-3\
-   alarm-1 \
-   sem-1   \
-   sem-2   \
-   mutex-1 \
-   event-1 \
-   heap-1  \
-   buffer-1
+TESTS :=   \
+   task-1  \
+   task-2  \
+   task-3  \
+   task-4  \
+   task-5  \
+   task-6  \
+   task-7  \
+   task-8  \
+   task-9  \
+   task-10 \
+   mq-1\
+   mq-2\
+   mq-3\
+   alarm-1 \
+   sem-1   \
+   sem-2   \
+   mutex-1 \
+   event-1 \
+   heap-1  \
+   buffer-1\
+   pipe-1
 
 CFLAGS := $(shell DESTDIR=$(DESTDIR) $(XENO_CONFIG) --skin=alchemy --cflags) -g
 LDFLAGS := $(shell DESTDIR=$(DESTDIR) $(XENO_CONFIG) --skin=alchemy --ldflags)


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