The branch main has been updated by wulf:

URL: 
https://cgit.FreeBSD.org/src/commit/?id=588064e658d32f037854dd852b988728197a28de

commit 588064e658d32f037854dd852b988728197a28de
Author:     Vladimir Kondratyev <[email protected]>
AuthorDate: 2024-06-06 20:42:07 +0000
Commit:     Vladimir Kondratyev <[email protected]>
CommitDate: 2024-06-06 20:42:07 +0000

    LinuxKPI: Move linux/math.h content out of linux/kernel.h
    
    To match Linux and allow direct linux/math.h inclusion.
    
    Sponsored by:   Serenity Cyber Security, LLC
    MFC after:      1 week
    Reviewed by:    bz
    Differential Revision:  https://reviews.freebsd.org/D45452
---
 sys/compat/linuxkpi/common/include/linux/kernel.h | 32 +----------
 sys/compat/linuxkpi/common/include/linux/math.h   | 67 +++++++++++++++++++++++
 2 files changed, 68 insertions(+), 31 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/kernel.h 
b/sys/compat/linuxkpi/common/include/linux/kernel.h
index d616aa542784..3ed36f01a69b 100644
--- a/sys/compat/linuxkpi/common/include/linux/kernel.h
+++ b/sys/compat/linuxkpi/common/include/linux/kernel.h
@@ -45,6 +45,7 @@
 #include <linux/compiler.h>
 #include <linux/container_of.h>
 #include <linux/limits.h>
+#include <linux/math.h>
 #include <linux/minmax.h>
 #include <linux/stringify.h>
 #include <linux/errno.h>
@@ -124,10 +125,7 @@ extern int linuxkpi_warn_dump_stack;
 #undef PTR_ALIGN
 #define        PTR_ALIGN(p, a)         ((__typeof(p))ALIGN((uintptr_t)(p), 
(a)))
 #define        IS_ALIGNED(x, a)        (((x) & ((__typeof(x))(a) - 1)) == 0)
-#define        DIV_ROUND_UP(x, n)      howmany(x, n)
 #define        __KERNEL_DIV_ROUND_UP(x, n)     howmany(x, n)
-#define        DIV_ROUND_UP_ULL(x, n)  DIV_ROUND_UP((unsigned long long)(x), 
(n))
-#define        DIV_ROUND_DOWN_ULL(x, n) (((unsigned long long)(x) / (n)) * (n))
 #define        FIELD_SIZEOF(t, f)      sizeof(((t *)0)->f)
 
 #define        printk(...)             printf(__VA_ARGS__)
@@ -521,16 +519,6 @@ kstrtou8_from_user(const char __user *s, size_t count, 
unsigned int base,
 #define offsetofend(t, m)      \
         (offsetof(t, m) + sizeof((((t *)0)->m)))
 
-/*
- * This looks more complex than it should be. But we need to
- * get the type for the ~ right in round_down (it needs to be
- * as wide as the result!), and we want to evaluate the macro
- * arguments just once each.
- */
-#define __round_mask(x, y) ((__typeof__(x))((y)-1))
-#define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1)
-#define round_down(x, y) ((x) & ~__round_mask(x, y))
-
 #define        smp_processor_id()      PCPU_GET(cpuid)
 #define        num_possible_cpus()     mp_ncpus
 #define        num_online_cpus()       mp_ncpus
@@ -540,24 +528,6 @@ extern bool linux_cpu_has_clflush;
 #define        cpu_has_clflush         linux_cpu_has_clflush
 #endif
 
-#define        DIV_ROUND_CLOSEST(x, divisor)   (((x) + ((divisor) / 2)) / 
(divisor))
-
-#define        DIV_ROUND_CLOSEST_ULL(x, divisor) ({            \
-       __typeof(divisor) __d = (divisor);              \
-       unsigned long long __ret = (x) + (__d) / 2;     \
-       __ret /= __d;                                   \
-       __ret;                                          \
-})
-
-static inline uintmax_t
-mult_frac(uintmax_t x, uintmax_t multiplier, uintmax_t divisor)
-{
-       uintmax_t q = (x / divisor);
-       uintmax_t r = (x % divisor);
-
-       return ((q * multiplier) + ((r * multiplier) / divisor));
-}
-
 typedef struct linux_ratelimit {
        struct timeval lasttime;
        int counter;
diff --git a/sys/compat/linuxkpi/common/include/linux/math.h 
b/sys/compat/linuxkpi/common/include/linux/math.h
new file mode 100644
index 000000000000..fc4542c83f1f
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/linux/math.h
@@ -0,0 +1,67 @@
+/*-
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2013-2015 Mellanox Technologies, Ltd.
+ * Copyright (c) 2014-2015 François Tigeot
+ * Copyright (c) 2016 Matt Macy <[email protected]>
+ * Copyright (c) 2019 Johannes Lundberg <[email protected]>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef _LINUXKPI_LINUX_MATH_H_
+#define        _LINUXKPI_LINUX_MATH_H_
+
+#include <linux/types.h>
+
+/*
+ * This looks more complex than it should be. But we need to
+ * get the type for the ~ right in round_down (it needs to be
+ * as wide as the result!), and we want to evaluate the macro
+ * arguments just once each.
+ */
+#define        __round_mask(x, y)      ((__typeof__(x))((y)-1))
+#define        round_up(x, y)          ((((x)-1) | __round_mask(x, y))+1)
+#define        round_down(x, y)        ((x) & ~__round_mask(x, y))
+
+#define        DIV_ROUND_UP(x, n)      howmany(x, n)
+#define        DIV_ROUND_UP_ULL(x, n)  DIV_ROUND_UP((unsigned long long)(x), 
(n))
+#define        DIV_ROUND_DOWN_ULL(x, n) (((unsigned long long)(x) / (n)) * (n))
+
+#define        DIV_ROUND_CLOSEST(x, divisor)   (((x) + ((divisor) / 2)) / 
(divisor))
+#define        DIV_ROUND_CLOSEST_ULL(x, divisor) ({            \
+       __typeof(divisor) __d = (divisor);              \
+       unsigned long long __ret = (x) + (__d) / 2;     \
+       __ret /= __d;                                   \
+       __ret;                                          \
+})
+
+static inline uintmax_t
+mult_frac(uintmax_t x, uintmax_t multiplier, uintmax_t divisor)
+{
+       uintmax_t q = (x / divisor);
+       uintmax_t r = (x % divisor);
+
+       return ((q * multiplier) + ((r * multiplier) / divisor));
+}
+
+#endif /* _LINUXKPI_LINUX_MATH_H_ */

Reply via email to