Module Name: src Committed By: njoly Date: Thu Apr 8 11:51:14 UTC 2010
Modified Files: src/sys/compat/common: kern_time_50.c src/sys/compat/linux/common: linux_time.c src/sys/compat/linux32/common: linux32_time.c src/sys/compat/netbsd32: netbsd32_compat_50.c netbsd32_time.c src/sys/kern: kern_time.c src/sys/sys: timevar.h Log Message: Add a new clock_gettime1() function that holds most of the clock_gettime syscall code (except for the copyout). Adjust all corresponding syscalls to make use of it. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/compat/common/kern_time_50.c cvs rdiff -u -r1.31 -r1.32 src/sys/compat/linux/common/linux_time.c cvs rdiff -u -r1.31 -r1.32 src/sys/compat/linux32/common/linux32_time.c cvs rdiff -u -r1.14 -r1.15 src/sys/compat/netbsd32/netbsd32_compat_50.c cvs rdiff -u -r1.40 -r1.41 src/sys/compat/netbsd32/netbsd32_time.c cvs rdiff -u -r1.164 -r1.165 src/sys/kern/kern_time.c cvs rdiff -u -r1.28 -r1.29 src/sys/sys/timevar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/compat/common/kern_time_50.c diff -u src/sys/compat/common/kern_time_50.c:1.14 src/sys/compat/common/kern_time_50.c:1.15 --- src/sys/compat/common/kern_time_50.c:1.14 Sat Apr 3 17:20:05 2010 +++ src/sys/compat/common/kern_time_50.c Thu Apr 8 11:51:13 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_time_50.c,v 1.14 2010/04/03 17:20:05 njoly Exp $ */ +/* $NetBSD: kern_time_50.c,v 1.15 2010/04/08 11:51:13 njoly Exp $ */ /*- * Copyright (c) 2008, 2009 The NetBSD Foundation, Inc. @@ -29,7 +29,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_time_50.c,v 1.14 2010/04/03 17:20:05 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_time_50.c,v 1.15 2010/04/08 11:51:13 njoly Exp $"); #ifdef _KERNEL_OPT #include "opt_aio.h" @@ -113,21 +113,14 @@ syscallarg(clockid_t) clock_id; syscallarg(struct timespec50 *) tp; } */ - clockid_t clock_id; + int error; struct timespec ats; struct timespec50 ats50; - clock_id = SCARG(uap, clock_id); - switch (clock_id) { - case CLOCK_REALTIME: - nanotime(&ats); - break; - case CLOCK_MONOTONIC: - nanouptime(&ats); - break; - default: - return (EINVAL); - } + error = clock_gettime1(SCARG(uap, clock_id), &ats); + if (error != 0) + return error; + timespec_to_timespec50(&ats, &ats50); return copyout(&ats50, SCARG(uap, tp), sizeof(ats50)); Index: src/sys/compat/linux/common/linux_time.c diff -u src/sys/compat/linux/common/linux_time.c:1.31 src/sys/compat/linux/common/linux_time.c:1.32 --- src/sys/compat/linux/common/linux_time.c:1.31 Sat Apr 3 17:20:05 2010 +++ src/sys/compat/linux/common/linux_time.c Thu Apr 8 11:51:13 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: linux_time.c,v 1.31 2010/04/03 17:20:05 njoly Exp $ */ +/* $NetBSD: linux_time.c,v 1.32 2010/04/08 11:51:13 njoly Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux_time.c,v 1.31 2010/04/03 17:20:05 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux_time.c,v 1.32 2010/04/08 11:51:13 njoly Exp $"); #include <sys/param.h> #include <sys/ucred.h> @@ -194,19 +194,18 @@ syscallarg(clockid_t) which; syscallarg(struct linux_timespec *)tp; } */ + int error; + clockid_t id; struct timespec ts; struct linux_timespec lts; - switch (SCARG(uap, which)) { - case LINUX_CLOCK_REALTIME: - nanotime(&ts); - break; - case LINUX_CLOCK_MONOTONIC: - nanouptime(&ts); - break; - default: - return EINVAL; - } + error = linux_to_native_clockid(&id, SCARG(uap, which)); + if (error != 0) + return error; + + error = clock_gettime1(id, &ts); + if (error != 0) + return error; native_to_linux_timespec(<s, &ts); return copyout(<s, SCARG(uap, tp), sizeof lts); Index: src/sys/compat/linux32/common/linux32_time.c diff -u src/sys/compat/linux32/common/linux32_time.c:1.31 src/sys/compat/linux32/common/linux32_time.c:1.32 --- src/sys/compat/linux32/common/linux32_time.c:1.31 Sat Apr 3 17:20:05 2010 +++ src/sys/compat/linux32/common/linux32_time.c Thu Apr 8 11:51:13 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: linux32_time.c,v 1.31 2010/04/03 17:20:05 njoly Exp $ */ +/* $NetBSD: linux32_time.c,v 1.32 2010/04/08 11:51:13 njoly Exp $ */ /*- * Copyright (c) 2006 Emmanuel Dreyfus, all rights reserved. @@ -33,7 +33,7 @@ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: linux32_time.c,v 1.31 2010/04/03 17:20:05 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: linux32_time.c,v 1.32 2010/04/08 11:51:13 njoly Exp $"); #include <sys/types.h> #include <sys/param.h> @@ -307,19 +307,18 @@ syscallarg(clockid_t) which; syscallarg(linux32_timespecp_t) tp; } */ + int error; + clockid_t id; struct timespec ts; struct linux32_timespec lts; - switch (SCARG(uap, which)) { - case LINUX_CLOCK_REALTIME: - nanotime(&ts); - break; - case LINUX_CLOCK_MONOTONIC: - nanouptime(&ts); - break; - default: - return EINVAL; - } + error = linux_to_native_clockid(&id, SCARG(uap, which)); + if (error != 0) + return error; + + error = clock_gettime1(id, &ts); + if (error != 0) + return error; native_to_linux32_timespec(<s, &ts); return copyout(<s, SCARG_P32(uap, tp), sizeof lts); Index: src/sys/compat/netbsd32/netbsd32_compat_50.c diff -u src/sys/compat/netbsd32/netbsd32_compat_50.c:1.14 src/sys/compat/netbsd32/netbsd32_compat_50.c:1.15 --- src/sys/compat/netbsd32/netbsd32_compat_50.c:1.14 Sat Apr 3 17:20:05 2010 +++ src/sys/compat/netbsd32/netbsd32_compat_50.c Thu Apr 8 11:51:14 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_compat_50.c,v 1.14 2010/04/03 17:20:05 njoly Exp $ */ +/* $NetBSD: netbsd32_compat_50.c,v 1.15 2010/04/08 11:51:14 njoly Exp $ */ /*- * Copyright (c) 2008 The NetBSD Foundation, Inc. @@ -36,7 +36,7 @@ * POSSIBILITY OF SUCH DAMAGE. */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.14 2010/04/03 17:20:05 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.15 2010/04/08 11:51:14 njoly Exp $"); #if defined(_KERNEL_OPT) #include "opt_sysv.h" @@ -312,17 +312,15 @@ syscallarg(netbsd32_clockid_t) clock_id; syscallarg(netbsd32_timespec50p_t) tp; } */ - clockid_t clock_id; + int error; struct timespec ats; struct netbsd32_timespec50 ts32; - clock_id = SCARG(uap, clock_id); - if (clock_id != CLOCK_REALTIME) - return (EINVAL); + error = clock_gettime1(SCARG(uap, clock_id), &ats); + if (error != 0) + return error; - nanotime(&ats); netbsd32_from_timespec50(&ats, &ts32); - return copyout(&ts32, SCARG_P32(uap, tp), sizeof(ts32)); } Index: src/sys/compat/netbsd32/netbsd32_time.c diff -u src/sys/compat/netbsd32/netbsd32_time.c:1.40 src/sys/compat/netbsd32/netbsd32_time.c:1.41 --- src/sys/compat/netbsd32/netbsd32_time.c:1.40 Sat Apr 3 17:20:05 2010 +++ src/sys/compat/netbsd32/netbsd32_time.c Thu Apr 8 11:51:14 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: netbsd32_time.c,v 1.40 2010/04/03 17:20:05 njoly Exp $ */ +/* $NetBSD: netbsd32_time.c,v 1.41 2010/04/08 11:51:14 njoly Exp $ */ /* * Copyright (c) 1998, 2001 Matthew R. Green @@ -27,7 +27,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: netbsd32_time.c,v 1.40 2010/04/03 17:20:05 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: netbsd32_time.c,v 1.41 2010/04/08 11:51:14 njoly Exp $"); #if defined(_KERNEL_OPT) #include "opt_ntp.h" @@ -353,17 +353,15 @@ syscallarg(netbsd32_clockid_t) clock_id; syscallarg(netbsd32_timespecp_t) tp; } */ - clockid_t clock_id; + int error; struct timespec ats; struct netbsd32_timespec ts32; - clock_id = SCARG(uap, clock_id); - if (clock_id != CLOCK_REALTIME) - return (EINVAL); + error = clock_gettime1(SCARG(uap, clock_id), &ats); + if (error != 0) + return error; - nanotime(&ats); netbsd32_from_timespec(&ats, &ts32); - return copyout(&ts32, SCARG_P32(uap, tp), sizeof(ts32)); } Index: src/sys/kern/kern_time.c diff -u src/sys/kern/kern_time.c:1.164 src/sys/kern/kern_time.c:1.165 --- src/sys/kern/kern_time.c:1.164 Sat Apr 3 17:20:05 2010 +++ src/sys/kern/kern_time.c Thu Apr 8 11:51:13 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: kern_time.c,v 1.164 2010/04/03 17:20:05 njoly Exp $ */ +/* $NetBSD: kern_time.c,v 1.165 2010/04/08 11:51:13 njoly Exp $ */ /*- * Copyright (c) 2000, 2004, 2005, 2007, 2008, 2009 The NetBSD Foundation, Inc. @@ -61,7 +61,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: kern_time.c,v 1.164 2010/04/03 17:20:05 njoly Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kern_time.c,v 1.165 2010/04/08 11:51:13 njoly Exp $"); #include <sys/param.h> #include <sys/resourcevar.h> @@ -178,22 +178,32 @@ syscallarg(clockid_t) clock_id; syscallarg(struct timespec *) tp; } */ - clockid_t clock_id; + int error; struct timespec ats; - clock_id = SCARG(uap, clock_id); + error = clock_gettime1(SCARG(uap, clock_id), &ats); + if (error != 0) + return error; + + return copyout(&ats, SCARG(uap, tp), sizeof(ats)); +} + +int +clock_gettime1(clockid_t clock_id, struct timespec *ts) +{ + switch (clock_id) { case CLOCK_REALTIME: - nanotime(&ats); + nanotime(ts); break; case CLOCK_MONOTONIC: - nanouptime(&ats); + nanouptime(ts); break; default: - return (EINVAL); + return EINVAL; } - return copyout(&ats, SCARG(uap, tp), sizeof(ats)); + return 0; } /* ARGSUSED */ Index: src/sys/sys/timevar.h diff -u src/sys/sys/timevar.h:1.28 src/sys/sys/timevar.h:1.29 --- src/sys/sys/timevar.h:1.28 Sat Apr 3 17:20:05 2010 +++ src/sys/sys/timevar.h Thu Apr 8 11:51:13 2010 @@ -1,4 +1,4 @@ -/* $NetBSD: timevar.h,v 1.28 2010/04/03 17:20:05 njoly Exp $ */ +/* $NetBSD: timevar.h,v 1.29 2010/04/08 11:51:13 njoly Exp $ */ /* * Copyright (c) 2005, 2008 The NetBSD Foundation. @@ -148,6 +148,7 @@ int abstimeout2timo(struct timespec *, int *); void adjtime1(const struct timeval *, struct timeval *, struct proc *); int clock_getres1(clockid_t, struct timespec *); +int clock_gettime1(clockid_t, struct timespec *); int clock_settime1(struct proc *, clockid_t, const struct timespec *, bool); int dogetitimer(struct proc *, int, struct itimerval *); int dosetitimer(struct proc *, int, struct itimerval *);