svn commit: r346176 - head/sys/sys

Warner Losh imp at FreeBSD.org
Tue Sep 3 14:06:50 UTC 2019


Author: imp
Date: Sat Apr 13 04:46:35 2019
New Revision: 346176
URL: https://svnweb.freebsd.org/changeset/base/346176

Log:
  Fix sbttons for values > 2s
  
  Add test against negative times. Add code to cope with larger values
  properly.
  
  Discussed with: bde@ (quite some time ago, for an earlier version)

Modified:
  head/sys/sys/time.h

Modified: head/sys/sys/time.h
==============================================================================
--- head/sys/sys/time.h	Sat Apr 13 04:42:17 2019	(r346175)
+++ head/sys/sys/time.h	Sat Apr 13 04:46:35 2019	(r346176)
@@ -184,8 +184,18 @@ sbttobt(sbintime_t _sbt)
 static __inline int64_t
 sbttons(sbintime_t _sbt)
 {
+	uint64_t ns;
 
-	return ((1000000000 * _sbt) >> 32);
+#ifdef KASSERT
+	KASSERT(_sbt >= 0, ("Negative values illegal for sbttons: %jx", _sbt));
+#endif
+	ns = _sbt;
+	if (ns >= SBT_1S)
+		ns = (ns >> 32) * 1000000000;
+	else
+		ns = 0;
+
+	return (ns + (1000000000 * (_sbt & 0xffffffffu) >> 32));
 }
 
 static __inline sbintime_t




More information about the svn-src-head mailing list