Module Name: src
Committed By: pgoyette
Date: Tue Sep 25 21:41:30 UTC 2018
Modified Files:
src/sys/compat/netbsd32 [pgoyette-compat]: netbsd32_compat_30.c
netbsd32_compat_50.c netbsd32_ioctl.c netbsd32_time.c
src/sys/kern [pgoyette-compat]: compat_stub.c
src/sys/sys [pgoyette-compat]: compat_stub.h
Log Message:
Additional use of NTP function pointers, since the NTP code might not
exist in the kernel. (NTP is not (yet) a module, so we don't need to
use the MP-safe mechanism.)
To generate a diff of this commit:
cvs rdiff -u -r1.31.16.10 -r1.31.16.11 \
src/sys/compat/netbsd32/netbsd32_compat_30.c
cvs rdiff -u -r1.32.16.9 -r1.32.16.10 \
src/sys/compat/netbsd32/netbsd32_compat_50.c
cvs rdiff -u -r1.91.2.2 -r1.91.2.3 src/sys/compat/netbsd32/netbsd32_ioctl.c
cvs rdiff -u -r1.49.12.1 -r1.49.12.2 src/sys/compat/netbsd32/netbsd32_time.c
cvs rdiff -u -r1.1.2.24 -r1.1.2.25 src/sys/kern/compat_stub.c
cvs rdiff -u -r1.1.2.36 -r1.1.2.37 src/sys/sys/compat_stub.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/netbsd32/netbsd32_compat_30.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_30.c:1.31.16.10 src/sys/compat/netbsd32/netbsd32_compat_30.c:1.31.16.11
--- src/sys/compat/netbsd32/netbsd32_compat_30.c:1.31.16.10 Sun Sep 23 08:02:50 2018
+++ src/sys/compat/netbsd32/netbsd32_compat_30.c Tue Sep 25 21:41:30 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_30.c,v 1.31.16.10 2018/09/23 08:02:50 pgoyette Exp $ */
+/* $NetBSD: netbsd32_compat_30.c,v 1.31.16.11 2018/09/25 21:41:30 pgoyette Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -27,7 +27,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_30.c,v 1.31.16.10 2018/09/23 08:02:50 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_30.c,v 1.31.16.11 2018/09/25 21:41:30 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include <opt_ntp.h>
@@ -55,6 +55,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
#include <sys/dirent.h>
#include <sys/kauth.h>
#include <sys/vfs_syscalls.h>
+#include <sys/compat_stub.h>
#include <compat/netbsd32/netbsd32.h>
#include <compat/netbsd32/netbsd32_syscall.h>
@@ -312,8 +313,11 @@ compat_30_netbsd32_ntp_gettime(struct lw
struct ntptimeval ntv;
int error = 0;
+ if (vec_ntp_gettime == NULL)
+ return EINVAL;
+
if (SCARG_P32(uap, ntvp)) {
- ntp_gettime(&ntv);
+ (*vec_ntp_gettime)(&ntv);
ntv32.time.tv_sec = ntv.time.tv_sec;
ntv32.time.tv_usec = ntv.time.tv_nsec / 1000;
@@ -322,7 +326,7 @@ compat_30_netbsd32_ntp_gettime(struct lw
error = copyout(&ntv32, SCARG_P32(uap, ntvp), sizeof(ntv32));
}
if (!error) {
- *retval = ntp_timestatus();
+ *retval = (*vec_ntp_timestatus)();
}
return (error);
Index: src/sys/compat/netbsd32/netbsd32_compat_50.c
diff -u src/sys/compat/netbsd32/netbsd32_compat_50.c:1.32.16.9 src/sys/compat/netbsd32/netbsd32_compat_50.c:1.32.16.10
--- src/sys/compat/netbsd32/netbsd32_compat_50.c:1.32.16.9 Sun Sep 23 09:16:25 2018
+++ src/sys/compat/netbsd32/netbsd32_compat_50.c Tue Sep 25 21:41:30 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_compat_50.c,v 1.32.16.9 2018/09/23 09:16:25 pgoyette Exp $ */
+/* $NetBSD: netbsd32_compat_50.c,v 1.32.16.10 2018/09/25 21:41:30 pgoyette 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.32.16.9 2018/09/23 09:16:25 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_compat_50.c,v 1.32.16.10 2018/09/25 21:41:30 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_compat_netbsd.h"
@@ -68,6 +68,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_com
#include <sys/kauth.h>
#include <sys/vfs_syscalls.h>
#include <sys/rnd.h>
+#include <sys/compat_stub.h>
#include <compat/netbsd32/netbsd32.h>
#include <compat/netbsd32/netbsd32_syscall.h>
@@ -943,8 +944,11 @@ compat_50_netbsd32_ntp_gettime(struct lw
struct ntptimeval ntv;
int error = 0;
+ if (vec_ntp_gettime == NULL)
+ return EINVAL;
+
if (SCARG_P32(uap, ntvp)) {
- ntp_gettime(&ntv);
+ (*vec_ntp_gettime)(&ntv);
ntv32.time.tv_sec = (int32_t)ntv.time.tv_sec;
ntv32.time.tv_nsec = ntv.time.tv_nsec;
@@ -955,7 +959,7 @@ compat_50_netbsd32_ntp_gettime(struct lw
error = copyout(&ntv32, SCARG_P32(uap, ntvp), sizeof(ntv32));
}
if (!error) {
- *retval = ntp_timestatus();
+ *retval = (*vec_ntp_timestatus)();
}
return (error);
Index: src/sys/compat/netbsd32/netbsd32_ioctl.c
diff -u src/sys/compat/netbsd32/netbsd32_ioctl.c:1.91.2.2 src/sys/compat/netbsd32/netbsd32_ioctl.c:1.91.2.3
--- src/sys/compat/netbsd32/netbsd32_ioctl.c:1.91.2.2 Thu Sep 6 06:55:46 2018
+++ src/sys/compat/netbsd32/netbsd32_ioctl.c Tue Sep 25 21:41:30 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_ioctl.c,v 1.91.2.2 2018/09/06 06:55:46 pgoyette Exp $ */
+/* $NetBSD: netbsd32_ioctl.c,v 1.91.2.3 2018/09/25 21:41:30 pgoyette Exp $ */
/*
* Copyright (c) 1998, 2001 Matthew R. Green
@@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.91.2.2 2018/09/06 06:55:46 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_ioctl.c,v 1.91.2.3 2018/09/25 21:41:30 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ntp.h"
@@ -61,6 +61,7 @@ __KERNEL_RCSID(0, "$NetBSD: netbsd32_ioc
#include <sys/exec_elf.h>
#include <sys/ksyms.h>
#include <sys/drvctlio.h>
+#include <sys/compat_stub.h>
#ifdef __sparc__
#include <dev/sun/fbio.h>
@@ -1010,12 +1011,15 @@ netbsd32_do_clockctl_ntp_adjtime(struct
struct timex ntv;
int error;
+ if (vec_ntp_adjtime1 == NULL)
+ return EINVAL;
+
error = copyin(args->tp, &ntv32, sizeof(ntv32));
if (error)
return (error);
netbsd32_to_timex(&ntv32, &ntv);
- ntp_adjtime1(&ntv);
+ (*vec_ntp_adjtime1)(&ntv);
netbsd32_from_timex(&ntv, &ntv32);
error = copyout(&ntv32, args->tp, sizeof(ntv));
Index: src/sys/compat/netbsd32/netbsd32_time.c
diff -u src/sys/compat/netbsd32/netbsd32_time.c:1.49.12.1 src/sys/compat/netbsd32/netbsd32_time.c:1.49.12.2
--- src/sys/compat/netbsd32/netbsd32_time.c:1.49.12.1 Tue Sep 11 23:58:46 2018
+++ src/sys/compat/netbsd32/netbsd32_time.c Tue Sep 25 21:41:30 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: netbsd32_time.c,v 1.49.12.1 2018/09/11 23:58:46 pgoyette Exp $ */
+/* $NetBSD: netbsd32_time.c,v 1.49.12.2 2018/09/25 21:41:30 pgoyette 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.49.12.1 2018/09/11 23:58:46 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: netbsd32_time.c,v 1.49.12.2 2018/09/25 21:41:30 pgoyette Exp $");
#if defined(_KERNEL_OPT)
#include "opt_ntp.h"
@@ -63,8 +63,11 @@ netbsd32___ntp_gettime50(struct lwp *l,
struct ntptimeval ntv;
int error = 0;
+ if (vec_ntp_gettime == NULL)
+ return EINVAL;
+
if (SCARG_P32(uap, ntvp)) {
- ntp_gettime(&ntv);
+ (*vec_ntp_gettime)(&ntv);
ntv32.time.tv_sec = ntv.time.tv_sec;
ntv32.time.tv_nsec = ntv.time.tv_nsec;
@@ -75,7 +78,7 @@ netbsd32___ntp_gettime50(struct lwp *l,
error = copyout(&ntv32, SCARG_P32(uap, ntvp), sizeof(ntv32));
}
if (!error) {
- *retval = ntp_timestatus();
+ *retval = (*vec_ntp_timestatus)();
}
return (error);
@@ -92,6 +95,9 @@ netbsd32_ntp_adjtime(struct lwp *l, cons
int error = 0;
int modes;
+ if (vec_ntp_adjtime1 == NULL)
+ return EINVAL;
+
if ((error = copyin(SCARG_P32(uap, tp), &ntv32, sizeof(ntv32))))
return (error);
@@ -108,12 +114,12 @@ netbsd32_ntp_adjtime(struct lwp *l, cons
NULL)))
return (error);
- ntp_adjtime1(&ntv);
+ (*vec_ntp_adjtime1(&ntv);
netbsd32_from_timex(&ntv, &ntv32);
error = copyout(&ntv32, SCARG_P32(uap, tp), sizeof(ntv32));
if (!error) {
- *retval = ntp_timestatus();
+ *retval = (*vec_ntp_timestatus)();
}
return error;
}
Index: src/sys/kern/compat_stub.c
diff -u src/sys/kern/compat_stub.c:1.1.2.24 src/sys/kern/compat_stub.c:1.1.2.25
--- src/sys/kern/compat_stub.c:1.1.2.24 Sun Sep 23 22:00:58 2018
+++ src/sys/kern/compat_stub.c Tue Sep 25 21:41:30 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.c,v 1.1.2.24 2018/09/23 22:00:58 pgoyette Exp $ */
+/* $NetBSD: compat_stub.c,v 1.1.2.25 2018/09/25 21:41:30 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -52,9 +52,11 @@
#ifdef NTP
void (*vec_ntp_gettime)(struct ntptimeval *) = ntp_gettime;
int (*vec_ntp_timestatus)(void) = ntp_timestatus;
+void (*vec_ntp_adjtime1)(struct timex *) = ntp_adjtime1;
#else
void (*vec_ntp_gettime)(struct ntptimeval *) = NULL;
int (*vec_ntp_timestatus)(void) = NULL;
+void (*vec_ntp_adjtime1)(struct timex *) = NULL;
#endif
/*
Index: src/sys/sys/compat_stub.h
diff -u src/sys/sys/compat_stub.h:1.1.2.36 src/sys/sys/compat_stub.h:1.1.2.37
--- src/sys/sys/compat_stub.h:1.1.2.36 Sun Sep 23 11:23:47 2018
+++ src/sys/sys/compat_stub.h Tue Sep 25 21:41:30 2018
@@ -1,4 +1,4 @@
-/* $NetBSD: compat_stub.h,v 1.1.2.36 2018/09/23 11:23:47 pgoyette Exp $ */
+/* $NetBSD: compat_stub.h,v 1.1.2.37 2018/09/25 21:41:30 pgoyette Exp $ */
/*-
* Copyright (c) 2018 The NetBSD Foundation, Inc.
@@ -42,9 +42,11 @@
*/
struct ntptimeval;
+struct timex;
extern void (*vec_ntp_gettime)(struct ntptimeval *);
extern int (*vec_ntp_timestatus)(void);
+extern void (*vec_ntp_adjtime1)(struct timex *);
MODULE_HOOK2(ntp_gettime_hooks, (struct ntptimeval *), (void))