Module: xenomai-forge
Branch: next
Commit: b0d68713102f8ecd81d1c7a4a1ef66d51ac4c99c
URL:    
http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=b0d68713102f8ecd81d1c7a4a1ef66d51ac4c99c

Author: Jorge Ramirez-Ortiz <j...@xenomai.org>
Date:   Thu May 29 12:04:55 2014 -0400

analogy/testing: continue the main loop until task destruction

---

 include/cobalt/kernel/rtdm/analogy/os_facilities.h |    2 ++
 kernel/drivers/analogy/testing/fake.c              |   10 ++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/include/cobalt/kernel/rtdm/analogy/os_facilities.h 
b/include/cobalt/kernel/rtdm/analogy/os_facilities.h
index 05db7f4..9dc649f 100644
--- a/include/cobalt/kernel/rtdm/analogy/os_facilities.h
+++ b/include/cobalt/kernel/rtdm/analogy/os_facilities.h
@@ -110,6 +110,8 @@ typedef rtdm_task_proc_t a4l_task_proc_t;
 
 #define a4l_task_sleep(delay) rtdm_task_sleep(delay)
 
+#define a4l_task_should_stop() rtdm_task_should_stop()
+
 /* --- Time section --- */
 
 static inline void a4l_udelay(unsigned int us)
diff --git a/kernel/drivers/analogy/testing/fake.c 
b/kernel/drivers/analogy/testing/fake.c
index 4a1bb43..8d2f575 100644
--- a/kernel/drivers/analogy/testing/fake.c
+++ b/kernel/drivers/analogy/testing/fake.c
@@ -237,21 +237,21 @@ static void task_proc(void *arg)
 
        struct fake_priv *priv = (struct fake_priv *)dev->priv;
 
-       while (1) {
+       while(!a4l_task_should_stop()) {
 
                int running;
 
                running = priv->ai_running;
                if (running && ai_push_values(ai_subd) < 0)
-                       break;
+                       continue;
 
                running = priv->ao_running;
                if (running && ao_pull_values(ao_subd) < 0)
-                       break;
+                       continue;
 
                running = priv->ai2_running;
                if (running && ai2_push_values(ai2_subd) < 0)
-                       break;
+                       continue;
 
                a4l_task_sleep(TASK_PERIOD);
        }
@@ -596,6 +596,8 @@ int test_attach(a4l_dev_t *dev, a4l_lnkdesc_t *arg)
                            "Fake AI task",
                            task_proc,
                            dev, A4L_TASK_HIGHEST_PRIORITY);
+       if (ret)
+               a4l_dbg(1, drv_dbg, dev, "Error creating A4L task \n");
 
        a4l_dbg(1, drv_dbg, dev, "AI2 subdevice registered\n");
 


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

Reply via email to