Jan Kiszka wrote: > Gilles Chanteperdrix wrote: >> GIT version control wrote: >>> 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 */ >>> + } >> Not ok. If rt_cond_wait_epilogue returns an error other than -EINTR, we >> want this error to be returned. > > As I said: This is what we used to do in 2.4 (and early 2.5-rc), and due > to the absence of spec on this topic, I would vote for restoring old > behavior. >
It's also what pthread_cond_wait does internally, BTW. Jan
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Xenomai-core mailing list Xenomai-core@gna.org https://mail.gna.org/listinfo/xenomai-core