From 35d64a3345463ace22f42ca6ca993b84e1d5f1e9 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Fri, 7 Nov 2003 20:11:44 -0800 Subject: [PATCH] Don't fold nanosleep() into clock_nanosleep(). The latter has buggy restart functionality and is a lot more complicated anyway. --- include/linux/signal.h | 2 +- kernel/posix-timers.c | 25 +------------------------ kernel/timer.c | 2 -- 3 files changed, 2 insertions(+), 27 deletions(-) diff --git a/include/linux/signal.h b/include/linux/signal.h index 2dc954224f55f..e051eb0b17dba 100644 --- a/include/linux/signal.h +++ b/include/linux/signal.h @@ -214,7 +214,7 @@ extern int sigprocmask(int, sigset_t *, sigset_t *); struct pt_regs; extern int get_signal_to_deliver(siginfo_t *info, struct pt_regs *regs, void *cookie); #endif -#define FOLD_NANO_SLEEP_INTO_CLOCK_NANO_SLEEP + #endif /* __KERNEL__ */ #endif /* _LINUX_SIGNAL_H */ diff --git a/kernel/posix-timers.c b/kernel/posix-timers.c index 64940545cb841..6b248db8034e7 100644 --- a/kernel/posix-timers.c +++ b/kernel/posix-timers.c @@ -1104,29 +1104,6 @@ long clock_nanosleep_restart(struct restart_block *restart_block); extern long do_clock_nanosleep(clockid_t which_clock, int flags, struct timespec *t); -#ifdef FOLD_NANO_SLEEP_INTO_CLOCK_NANO_SLEEP - -asmlinkage long -sys_nanosleep(struct timespec __user *rqtp, struct timespec __user *rmtp) -{ - struct timespec t; - long ret; - - if (copy_from_user(&t, rqtp, sizeof (t))) - return -EFAULT; - - if ((unsigned) t.tv_nsec >= NSEC_PER_SEC || t.tv_sec < 0) - return -EINVAL; - - ret = do_clock_nanosleep(CLOCK_REALTIME, 0, &t); - - if (ret == -ERESTART_RESTARTBLOCK && rmtp && - copy_to_user(rmtp, &t, sizeof (t))) - return -EFAULT; - return ret; -} -#endif // ! FOLD_NANO_SLEEP_INTO_CLOCK_NANO_SLEEP - asmlinkage long sys_clock_nanosleep(clockid_t which_clock, int flags, const struct timespec __user *rqtp, @@ -1244,7 +1221,7 @@ do_clock_nanosleep(clockid_t which_clock, int flags, struct timespec *tsave) return 0; } /* - * This will restart either clock_nanosleep or clock_nanosleep + * This will restart clock_nanosleep. Incorrectly, btw. */ long clock_nanosleep_restart(struct restart_block *restart_block) diff --git a/kernel/timer.c b/kernel/timer.c index a8442b38659b9..a9c8c1958b6af 100644 --- a/kernel/timer.c +++ b/kernel/timer.c @@ -1059,7 +1059,6 @@ asmlinkage long sys_gettid(void) { return current->pid; } -#ifndef FOLD_NANO_SLEEP_INTO_CLOCK_NANO_SLEEP static long nanosleep_restart(struct restart_block *restart) { @@ -1118,7 +1117,6 @@ asmlinkage long sys_nanosleep(struct timespec *rqtp, struct timespec *rmtp) } return ret; } -#endif // ! FOLD_NANO_SLEEP_INTO_CLOCK_NANO_SLEEP /* * sys_sysinfo - fill in sysinfo struct -- 2.53.0