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

Reply via email to