[Xenomai-git] Jan Kiszka : Native: Fix return code of in-kernel rt_cond_wait[_until]
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]
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]
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