[Xenomai-git] Jan Kiszka : Native: Fix return code of in-kernel rt_cond_wait[_until]

2010-03-06 Thread GIT version control
Module: xenomai-jki
Branch: queues/assorted
Commit: 7d3e9b176dfadda8aa734e4449b552b6f695073e
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=7d3e9b176dfadda8aa734e4449b552b6f695073e

Author: Jan Kiszka jan.kis...@siemens.com
Date:   Tue Mar  2 15:45:51 2010 +0100

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

Return the error of the cond wait epilogue only if the prologue did not
fail. Otherwise use the latter.

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..d6c8546 100644
--- a/ksrc/skins/native/cond.c
+++ b/ksrc/skins/native/cond.c
@@ -467,17 +467,17 @@ static int rt_cond_wait_inner(RT_COND *cond, RT_MUTEX 
*mutex,
  xntmode_t timeout_mode, RTIME timeout)
 {
unsigned lockcnt;
-   int err;
+   int err, epilogue_err = 0;
 
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);
+   epilogue_err = rt_cond_wait_epilogue(mutex, lockcnt);
+   } while (epilogue_err == -EINTR);
 
-   return err;
+   return err ? err : epilogue_err;
 }
 /**
  * @fn int rt_cond_wait(RT_COND *cond, RT_MUTEX *mutex, RTIME timeout)


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


[Xenomai-git] Jan Kiszka : Native: Fix return code of in-kernel rt_cond_wait[_until]

2010-03-02 Thread GIT version control
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


[Xenomai-git] Jan Kiszka : Native: Fix return code of in-kernel rt_cond_wait[_until]

2010-03-02 Thread GIT version control
Module: xenomai-jki
Branch: for-upstream
Commit: 6f1e0d2c2aab932cd834884131f538d3f1ed43f5
URL:
http://git.xenomai.org/?p=xenomai-jki.git;a=commit;h=6f1e0d2c2aab932cd834884131f538d3f1ed43f5

Author: Jan Kiszka jan.kis...@siemens.com
Date:   Tue Mar  2 15:45:51 2010 +0100

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

Return the error of the cond wait epilogue only if the prologue did not
fail. Otherwise use the latter.

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..d6c8546 100644
--- a/ksrc/skins/native/cond.c
+++ b/ksrc/skins/native/cond.c
@@ -467,17 +467,17 @@ static int rt_cond_wait_inner(RT_COND *cond, RT_MUTEX 
*mutex,
  xntmode_t timeout_mode, RTIME timeout)
 {
unsigned lockcnt;
-   int err;
+   int err, epilogue_err = 0;
 
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);
+   epilogue_err = rt_cond_wait_epilogue(mutex, lockcnt);
+   } while (epilogue_err == -EINTR);
 
-   return err;
+   return err ? err : epilogue_err;
 }
 /**
  * @fn int rt_cond_wait(RT_COND *cond, RT_MUTEX *mutex, RTIME timeout)


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