Module: xenomai-forge Branch: next Commit: a9931c7d010d9d5bf73c7a018af6626471752a00 URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=a9931c7d010d9d5bf73c7a018af6626471752a00
Author: Philippe Gerum <r...@xenomai.org> Date: Wed Jul 9 11:52:57 2014 +0200 lib/cobalt: fix cobalt_monitor_exit() handling of EINTR --- lib/cobalt/internal.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/cobalt/internal.c b/lib/cobalt/internal.c index e0d990d..6c1331d 100644 --- a/lib/cobalt/internal.c +++ b/lib/cobalt/internal.c @@ -230,6 +230,7 @@ int cobalt_monitor_exit(cobalt_monitor_t *mon) struct cobalt_monitor_data *datp; unsigned long status; xnhandle_t cur; + int ret; __sync_synchronize(); @@ -246,9 +247,13 @@ int cobalt_monitor_exit(cobalt_monitor_t *mon) if (xnsynch_fast_release(&datp->owner, cur)) return 0; syscall: - return XENOMAI_SKINCALL1(__cobalt_muxid, - sc_cobalt_monitor_exit, - mon); + do + ret = XENOMAI_SKINCALL1(__cobalt_muxid, + sc_cobalt_monitor_exit, + mon); + while (ret == -EINTR); + + return ret; } int cobalt_monitor_wait(cobalt_monitor_t *mon, int event, _______________________________________________ Xenomai-git mailing list Xenomai-git@xenomai.org http://www.xenomai.org/mailman/listinfo/xenomai-git