Module: xenomai-jki
Branch: for-upstream
Commit: f1dfda551b6997f74141986759932e2723a9f024
URL:    
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=f1dfda551b6997f74141986759932e2723a9f024

Author: Jan Kiszka <jan.kis...@siemens.com>
Date:   Tue Mar  2 13:17:35 2010 +0100

Native: Fix return code of in-kernel rt_cond_wait[_until]

In rt_cond_wait_inner, do not let rt_cond_wait_epilogue overwrite the
primary error code of rt_cond_wait_prologue. This restores the in-kernel
semantics of rt_cond_wait[_until] that were valid before 97323b3287.

Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>

---

 ksrc/skins/native/cond.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/ksrc/skins/native/cond.c b/ksrc/skins/native/cond.c
index 10727d1..2dc0069 100644
--- a/ksrc/skins/native/cond.c
+++ b/ksrc/skins/native/cond.c
@@ -472,10 +472,10 @@ static int rt_cond_wait_inner(RT_COND *cond, RT_MUTEX 
*mutex,
        err = rt_cond_wait_prologue(cond, mutex, &lockcnt, 
                                    timeout_mode, timeout);
 
-       if(!err || err == -ETIMEDOUT || err == -EINTR)
-               do {
-                       err = rt_cond_wait_epilogue(mutex, lockcnt);
-               } while (err == -EINTR);
+       if (!err || err == -ETIMEDOUT || err == -EINTR) {
+               while (rt_cond_wait_epilogue(mutex, lockcnt) == -EINTR)
+                       ; /* empty */
+       }
 
        return err;
 }


_______________________________________________
Xenomai-git mailing list
Xenomai-git@gna.org
https://mail.gna.org/listinfo/xenomai-git

Reply via email to