svn commit: r299656 - head/sys/compat/linuxkpi/common/include/linux
Hans Petter Selasky
hselasky at FreeBSD.org
Fri May 13 11:02:03 UTC 2016
Author: hselasky
Date: Fri May 13 11:02:02 2016
New Revision: 299656
URL: https://svnweb.freebsd.org/changeset/base/299656
Log:
Implement nsecs_to_jiffies() in the LinuxKPI and while at it
streamline the rest of the xxx_to_jiffies() functions to have a
constant 64-bit argument and use identical range checks for the
result.
Specifically preserve msecs_to_jiffies(0) returning 0. See r282743 for
further details.
MFC after: 1 week
Sponsored by: Mellanox Technologies
Modified:
head/sys/compat/linuxkpi/common/include/linux/jiffies.h
Modified: head/sys/compat/linuxkpi/common/include/linux/jiffies.h
==============================================================================
--- head/sys/compat/linuxkpi/common/include/linux/jiffies.h Fri May 13 10:59:46 2016 (r299655)
+++ head/sys/compat/linuxkpi/common/include/linux/jiffies.h Fri May 13 11:02:02 2016 (r299656)
@@ -2,7 +2,7 @@
* Copyright (c) 2010 Isilon Systems, Inc.
* Copyright (c) 2010 iX Systems, Inc.
* Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013, 2014 Mellanox Technologies, Ltd.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -39,16 +39,6 @@
#include <sys/kernel.h>
#include <sys/limits.h>
-static inline int
-msecs_to_jiffies(int msec)
-{
- struct timeval tv;
-
- tv.tv_sec = msec / 1000;
- tv.tv_usec = (msec % 1000) * 1000;
- return (tvtohz(&tv) - 1);
-}
-
#define jiffies ticks
#define jiffies_64 ticks
#define jiffies_to_msecs(x) (((int64_t)(x)) * 1000 / hz)
@@ -78,17 +68,35 @@ timespec_to_jiffies(const struct timespe
}
static inline int
-usecs_to_jiffies(const unsigned int u)
+msecs_to_jiffies(const u64 msec)
{
u64 result;
- result = ((u64)u * hz + 1000000 - 1) / 1000000;
+ result = howmany(msec * (u64)hz, 1000ULL);
if (result > MAX_JIFFY_OFFSET)
result = MAX_JIFFY_OFFSET;
return ((int)result);
}
+static inline int
+usecs_to_jiffies(const u64 u)
+{
+ u64 result;
+
+ result = howmany(u * (u64)hz, 1000000ULL);
+ if (result > MAX_JIFFY_OFFSET)
+ result = MAX_JIFFY_OFFSET;
+
+ return ((int)result);
+}
+
+static inline u64
+nsecs_to_jiffies(const u64 n)
+{
+ return (usecs_to_jiffies(howmany(n, 1000ULL)));
+}
+
static inline u64
get_jiffies_64(void)
{
More information about the svn-src-head
mailing list