summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorbde <bde@FreeBSD.org>2002-09-25 12:00:38 +0000
committerbde <bde@FreeBSD.org>2002-09-25 12:00:38 +0000
commit23905c1c4617135e13d5c828d8bfb5ef751bcc4d (patch)
tree693ec1e106c2d61eed07674e27b095379140b1bb /sys/kern
parent1a47919de4c42db74ca895ddd0ccb59734cf95e1 (diff)
downloadFreeBSD-src-23905c1c4617135e13d5c828d8bfb5ef751bcc4d.zip
FreeBSD-src-23905c1c4617135e13d5c828d8bfb5ef751bcc4d.tar.gz
Round up instead of towards 0 in clock_getres() so that a resolution of
0 is never returned. PR: 41781 MFC after: 3 days
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/kern_time.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/kern_time.c b/sys/kern/kern_time.c
index 417a754..46645ea 100644
--- a/sys/kern/kern_time.c
+++ b/sys/kern/kern_time.c
@@ -214,7 +214,12 @@ clock_getres(struct thread *td, struct clock_getres_args *uap)
error = 0;
if (SCARG(uap, tp)) {
ts.tv_sec = 0;
- ts.tv_nsec = 1000000000 / tc_getfrequency();
+ /*
+ * Round up the result of the division cheaply by adding 1.
+ * Rounding up is especially important if rounding down
+ * would give 0. Perfect rounding is unimportant.
+ */
+ ts.tv_nsec = 1000000000 / tc_getfrequency() + 1;
error = copyout(&ts, SCARG(uap, tp), sizeof(ts));
}
return (error);
OpenPOWER on IntegriCloud