In my userspace POSIX program, I get a '-1' return value from sem_timedwait,
even when the function succeeds. When the function succeeds, errno is '-1' as
well. I am using this workaround at the moment:
result = sem_timedwait(&cas_sem, &wake_time);
if (result < 0 && errno > 0) /* errno > 0 to work around xenomai bug */
{
print_msg(WARN_MSG, "sem_wait returned with error code %d\n",
errno);
continue;
}
I am using xenomai 2.2.4, but I think the problem exists in other branches as
well. I believe the attached patch against the trunk should fix the problem.
Do you agree?
Thanks,
Jeff
Index: ksrc/skins/posix/syscall.c
===================================================================
--- ksrc/skins/posix/syscall.c (revision 1911)
+++ ksrc/skins/posix/syscall.c (working copy)
@@ -492,7 +492,7 @@
&ts,
(void __user *)__xn_reg_arg2(regs), sizeof(ts));
- return sem_timedwait(&sm.native_sem, &ts) == 0 ? : -thread_get_errno();
+ return sem_timedwait(&sm.native_sem, &ts) == 0 ? 0 : -thread_get_errno();
}
static int __sem_trywait(struct task_struct *curr, struct pt_regs *regs)
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help