The branch main has been updated by imp:

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

commit b487b1f502899530951bd3923b3927c067d13ffb
Author:     Warner Losh <i...@freebsd.org>
AuthorDate: 2024-10-15 19:49:42 +0000
Commit:     Warner Losh <i...@freebsd.org>
CommitDate: 2024-10-15 21:05:49 +0000

    openzfs/freebsd: Use compiler.h from FreeBSD's base's linuxkpi
    
    The FreeBSD linux/compiler.h in OpenZFS was copied from a very old
    version of FreeBSD's linuxkpi's linux/compiler.h. There's no need for
    this duplication. Use FreeBSD's linuxkpi version instead, and provide
    zfs_fallthrough to augment it (it's all that's needed). Use #pragma once
    to avoid naming issues for guard variables. Since this is a complete
    rewrite, use my copyright here (the original code in FreeBSD still
    credits everybody).
    
    Remove extra copies of macros that were defined elsewhere, but are now
    properly defined in LinuxKPI so are redundant.
    
    This is currently pull request #16650 upstream. Committing now to get
    wider testing (make universe works, but historically doesn't catch all
    errors).
    
    Sponsored by:           Netflix
    Reviewed by:            brooks
    Differential Revision:  https://reviews.freebsd.org/D47131
---
 .../openzfs/include/os/freebsd/linux/compiler.h    | 83 +++-------------------
 .../openzfs/include/os/freebsd/spl/sys/ccompat.h   |  9 ---
 .../openzfs/include/os/freebsd/spl/sys/debug.h     |  4 --
 3 files changed, 8 insertions(+), 88 deletions(-)

diff --git a/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h 
b/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h
index b408b77c746d..24f09c722158 100644
--- a/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h
+++ b/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h
@@ -1,10 +1,5 @@
 /*
- * Copyright (c) 2010 Isilon Systems, Inc.
- * Copyright (c) 2010 iXsystems, Inc.
- * Copyright (c) 2010 Panasas, Inc.
- * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
- * Copyright (c) 2015 François Tigeot
- * All rights reserved.
+ * Copyright (c) 2024 Warner Losh.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -26,76 +21,14 @@
  * 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.
- *
- * $FreeBSD$
  */
-#ifndef        _LINUX_COMPILER_H_
-#define        _LINUX_COMPILER_H_
-
-#include <sys/cdefs.h>
-
-#define        __user
-#define        __kernel
-#define        __safe
-#define        __force
-#define        __nocast
-#define        __iomem
-#define        __chk_user_ptr(x)               ((void)0)
-#define        __chk_io_ptr(x)                 ((void)0)
-#define        __builtin_warning(x, y...)      (1)
-#define        __acquires(x)
-#define        __releases(x)
-#define        __acquire(x)                    do { } while (0)
-#define        __release(x)                    do { } while (0)
-#define        __cond_lock(x, c)               (c)
-#define        __bitwise
-#define        __devinitdata
-#define        __deprecated
-#define        __init
-#define        __initconst
-#define        __devinit
-#define        __devexit
-#define        __exit
-#define        __rcu
-#define        __percpu
-#define        __weak __weak_symbol
-#define        __malloc
-#define        ___stringify(...)               #__VA_ARGS__
-#define        __stringify(...)                ___stringify(__VA_ARGS__)
-#define        __attribute_const__             __attribute__((__const__))
-#undef __always_inline
-#define        __always_inline                 inline
-#define        noinline                        __noinline
-#define        ____cacheline_aligned           __aligned(CACHE_LINE_SIZE)
-#define        zfs_fallthrough                 __attribute__((__fallthrough__))
-
-#if !defined(_KERNEL) && !defined(_STANDALONE)
-#define        likely(x)                       __builtin_expect(!!(x), 1)
-#define        unlikely(x)                     __builtin_expect(!!(x), 0)
-#endif
-#define        typeof(x)                       __typeof(x)
-
-#define        uninitialized_var(x)            x = x
-#define        __maybe_unused                  __unused
-#define        __always_unused                 __unused
-#define        __must_check                    __result_use_check
-
-#define        __printf(a, b)                  __printflike(a, b)
 
-#define        barrier()                       __asm__ __volatile__("": : 
:"memory")
-#define        ___PASTE(a, b) a##b
-#define        __PASTE(a, b) ___PASTE(a, b)
-
-#define        ACCESS_ONCE(x)                  (*(volatile __typeof(x) *)&(x))
-
-#define        WRITE_ONCE(x, v) do {           \
-       barrier();                      \
-       ACCESS_ONCE(x) = (v);           \
-       barrier();                      \
-} while (0)
-
-#define        lockless_dereference(p) READ_ONCE(p)
+/*
+ * FreeBSD's LinuxKPI compiler.h as far back as FreeBSD 12 has what we need,
+ * except zfs_fallthrough.
+ */
+#pragma once
 
-#define        _AT(T, X)       ((T)(X))
+#include <compat/linuxkpi/common/include/linux/compiler.h>
 
-#endif /* _LINUX_COMPILER_H_ */
+#define        zfs_fallthrough                 __attribute__((__fallthrough__))
diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h 
b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h
index 48749fb8eea2..07b3515ad964 100644
--- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h
+++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h
@@ -70,15 +70,6 @@ hlist_del(struct hlist_node *n)
                n->next->pprev = n->pprev;
 }
        /* BEGIN CSTYLED */
-#define        READ_ONCE(x) ({                 \
-       __typeof(x) __var = ({          \
-               barrier();              \
-               ACCESS_ONCE(x);         \
-       });                             \
-       barrier();                      \
-       __var;                          \
-})
-
 #define        HLIST_HEAD_INIT { }
 #define        HLIST_HEAD(name) struct hlist_head name = HLIST_HEAD_INIT
 #define        INIT_HLIST_HEAD(head) (head)->first = NULL
diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h 
b/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h
index f041dde34fc8..9eb424dd0373 100644
--- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h
+++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/debug.h
@@ -95,10 +95,6 @@ spl_assert(const char *buf, const char *file, const char 
*func, int line)
 #ifndef expect
 #define        expect(expr, value) (__builtin_expect((expr), (value)))
 #endif
-#ifndef __linux__
-#define        likely(expr)   expect((expr) != 0, 1)
-#define        unlikely(expr) expect((expr) != 0, 0)
-#endif
 
 #define        PANIC(fmt, a...)                                                
\
        spl_panic(__FILE__, __FUNCTION__, __LINE__, fmt, ## a)

Reply via email to