summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/kern/kern_sysctl.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/kern/kern_sysctl.c')
-rw-r--r--freebsd/sys/kern/kern_sysctl.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/freebsd/sys/kern/kern_sysctl.c b/freebsd/sys/kern/kern_sysctl.c
index 3baea2e4..ea9c1821 100644
--- a/freebsd/sys/kern/kern_sysctl.c
+++ b/freebsd/sys/kern/kern_sysctl.c
@@ -1704,6 +1704,53 @@ retry:
}
/*
+ * Based on on sysctl_handle_int() convert microseconds to a sbintime.
+ */
+int
+sysctl_usec_to_sbintime(SYSCTL_HANDLER_ARGS)
+{
+ int error;
+ int64_t tt;
+ sbintime_t sb;
+
+ tt = *(int64_t *)arg1;
+ sb = ustosbt(tt);
+
+ error = sysctl_handle_64(oidp, &sb, 0, req);
+ if (error || !req->newptr)
+ return (error);
+
+ tt = sbttous(sb);
+ *(int64_t *)arg1 = tt;
+
+ return (0);
+}
+
+/*
+ * Based on on sysctl_handle_int() convert milliseconds to a sbintime.
+ */
+int
+sysctl_msec_to_sbintime(SYSCTL_HANDLER_ARGS)
+{
+ int error;
+ int64_t tt;
+ sbintime_t sb;
+
+ tt = *(int64_t *)arg1;
+ sb = mstosbt(tt);
+
+ error = sysctl_handle_64(oidp, &sb, 0, req);
+ if (error || !req->newptr)
+ return (error);
+
+ tt = sbttoms(sb);
+ *(int64_t *)arg1 = tt;
+
+ return (0);
+}
+
+
+/*
* Transfer functions to/from kernel space.
* XXX: rather untested at this point
*/