2008-04-19 Dmitry V. Levin <ldv@altlinux.org>
* syscall.c (is_restart_error): New function.
* defs.h (is_restart_error): Declare it.
* linux/dummy.h (sys_nanosleep): Uncouple from sys_adjtime().
* time.c (sys_nanosleep): New function, based on is_restart_error().
diff --git a/syscall.c b/syscall.c
index 91331aa..f1b7054 100644
--- a/syscall.c
+++ b/syscall.c
@@ -2641,3 +2641,22 @@
return 0;
}
#endif /* SUNOS4 */
+
+int
+is_restart_error(struct tcb *tcp)
+{
+#ifdef LINUX
+ if (!syserror(tcp))
+ return 0;
+ switch (tcp->u_error) {
+ case ERESTARTSYS:
+ case ERESTARTNOINTR:
+ case ERESTARTNOHAND:
+ case ERESTART_RESTARTBLOCK:
+ return 1;
+ default:
+ break;
+ }
+#endif /* LINUX */
+ return 0;
+}