浏览代码

semaphore: fix EINTR case

Léo Villeveygoux 8 年之前
父节点
当前提交
06ca4e8fcf
共有 1 个文件被更改,包括 3 次插入2 次删除
  1. 3 2
      src/common/thread.c

+ 3 - 2
src/common/thread.c

@@ -19,6 +19,7 @@
 #include <core/simgrid.h>
 #include <core/simgrid.h>
 #include <core/workers.h>
 #include <core/workers.h>
 
 
+#include <errno.h>
 #include <limits.h>
 #include <limits.h>
 
 
 #ifdef STARPU_SIMGRID
 #ifdef STARPU_SIMGRID
@@ -933,7 +934,7 @@ int starpu_sem_getvalue(starpu_sem_t *sem, int *sval)
 int starpu_sem_wait(starpu_sem_t *sem)
 int starpu_sem_wait(starpu_sem_t *sem)
 {
 {
 	int ret;
 	int ret;
-	while((ret = sem_wait(sem)) == EINTR)
+	while((ret = sem_wait(sem)) == -1 && errno == EINTR)
 		;
 		;
 
 
 	return ret;
 	return ret;
@@ -942,7 +943,7 @@ int starpu_sem_wait(starpu_sem_t *sem)
 int starpu_sem_trywait(starpu_sem_t *sem)
 int starpu_sem_trywait(starpu_sem_t *sem)
 {
 {
 	int ret;
 	int ret;
-	while((ret = sem_trywait(sem)) == EINTR)
+	while((ret = sem_trywait(sem)) == -1 && errno == EINTR)
 		;
 		;
 	
 	
 	return ret;
 	return ret;