Просмотр исходного кода

更新 nanosleep 返回值异常

Signed-off-by: zhkag <zhkag@foxmail.com>
zhkag 3 лет назад
Родитель
Сommit
e3823299a4
1 измененных файлов с 4 добавлено и 2 удалено
  1. 4 2
      components/lwp/lwp_syscall.c

+ 4 - 2
components/lwp/lwp_syscall.c

@@ -923,7 +923,8 @@ int sys_nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
     if ((ret != -1 || rt_get_errno() == EINTR) && rmtp && lwp_user_accessable((void *)rmtp, sizeof *rmtp))
     {
         lwp_put_to_user(rmtp, (void *)&rmtp_k, sizeof rmtp_k);
-        return -EINTR;
+        if(ret != 0)
+            return -EINTR;
     }
 #else
     if (rmtp)
@@ -3872,7 +3873,8 @@ int sys_clock_nanosleep(clockid_t clk, int flags, const struct timespec *rqtp, s
     if ((ret != -1 || rt_get_errno() == EINTR) && rmtp && lwp_user_accessable((void *)rmtp, sizeof *rmtp))
     {
         lwp_put_to_user(rmtp, (void *)&rmtp_k, sizeof rmtp_k);
-        return -EINTR;
+        if(ret != 0)
+            return -EINTR;
     }
 #else
     if (rmtp)