aboutsummaryrefslogtreecommitdiffstats
path: root/arch/alpha/kernel/osf_sys.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-10-23 13:53:02 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2008-10-23 13:53:02 -0400
commit1f6d6e8ebe73ba9d9d4c693f7f6f50f661dbd6e4 (patch)
treebe7a2d20b1728da5a0d844a6f4cd382b2c2569fb /arch/alpha/kernel/osf_sys.c
parentdb563fc2e80534f98c7f9121a6f7dfe41f177a79 (diff)
parent268a3dcfea2077fca60d3715caa5c96f9b5e6ea7 (diff)
Merge branch 'v28-range-hrtimers-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'v28-range-hrtimers-for-linus-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (37 commits) hrtimers: add missing docbook comments to struct hrtimer hrtimers: simplify hrtimer_peek_ahead_timers() hrtimers: fix docbook comments DECLARE_PER_CPU needs linux/percpu.h hrtimers: fix typo rangetimers: fix the bug reported by Ingo for real rangetimer: fix BUG_ON reported by Ingo rangetimer: fix x86 build failure for the !HRTIMERS case select: fix alpha OSF wrapper select: fix alpha OSF wrapper hrtimer: peek at the timer queue just before going idle hrtimer: make the futex() system call use the per process slack value hrtimer: make the nanosleep() syscall use the per process slack hrtimer: fix signed/unsigned bug in slack estimator hrtimer: show the timer ranges in /proc/timer_list hrtimer: incorporate feedback from Peter Zijlstra hrtimer: add a hrtimer_start_range() function hrtimer: another build fix hrtimer: fix build bug found by Ingo hrtimer: make select() and poll() use the hrtimer range feature ...
Diffstat (limited to 'arch/alpha/kernel/osf_sys.c')
-rw-r--r--arch/alpha/kernel/osf_sys.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c
index f25f6c490952..18a3ea1aac51 100644
--- a/arch/alpha/kernel/osf_sys.c
+++ b/arch/alpha/kernel/osf_sys.c
@@ -983,10 +983,12 @@ asmlinkage int
983osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp, 983osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
984 struct timeval32 __user *tvp) 984 struct timeval32 __user *tvp)
985{ 985{
986 s64 timeout = MAX_SCHEDULE_TIMEOUT; 986 struct timespec end_time, *to = NULL;
987 if (tvp) { 987 if (tvp) {
988 time_t sec, usec; 988 time_t sec, usec;
989 989
990 to = &end_time;
991
990 if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp)) 992 if (!access_ok(VERIFY_READ, tvp, sizeof(*tvp))
991 || __get_user(sec, &tvp->tv_sec) 993 || __get_user(sec, &tvp->tv_sec)
992 || __get_user(usec, &tvp->tv_usec)) { 994 || __get_user(usec, &tvp->tv_usec)) {
@@ -996,14 +998,13 @@ osf_select(int n, fd_set __user *inp, fd_set __user *outp, fd_set __user *exp,
996 if (sec < 0 || usec < 0) 998 if (sec < 0 || usec < 0)
997 return -EINVAL; 999 return -EINVAL;
998 1000
999 if ((unsigned long) sec < MAX_SELECT_SECONDS) { 1001 if (poll_select_set_timeout(to, sec, usec * NSEC_PER_USEC))
1000 timeout = (usec + 1000000/HZ - 1) / (1000000/HZ); 1002 return -EINVAL;
1001 timeout += sec * (unsigned long) HZ; 1003
1002 }
1003 } 1004 }
1004 1005
1005 /* OSF does not copy back the remaining time. */ 1006 /* OSF does not copy back the remaining time. */
1006 return core_sys_select(n, inp, outp, exp, &timeout); 1007 return core_sys_select(n, inp, outp, exp, to);
1007} 1008}
1008 1009
1009struct rusage32 { 1010struct rusage32 {