The branch main has been updated by dumbbell:

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

commit 33fa585a0e9032b31c563c8aae001c0c2a4866d4
Author:     Jean-Sébastien Pédron <[email protected]>
AuthorDate: 2025-08-17 11:10:43 +0000
Commit:     Jean-Sébastien Pédron <[email protected]>
CommitDate: 2026-01-05 19:32:48 +0000

    linuxkpi: Split <linux/compiler.h>
    
    On Linux, they split the content into three headers:
    1. <linux/compiler.h>
    2. <linux/compiler_types.h>
    3. <linux/compiler_attributes.h>
    
    The first includes the second, which includes the third.
    
    <linux/compiler_types.h> is also included on the compiler command line
    by default! I added that to the compilation flags of the DRM drivers.
    This allowed me to drop at least one:
    
        #ifdef __FreeBSD
        #include <linux/compiler.h>
        #endif
    
    Note that our copy of <linux/compiler.h> contains definitions which are
    not defined by Linux' <linux/compiler.h>. I left them alone.
    
    Reviewed by:    emaste
    Sponsored by:   The FreeBSD Foundation
    Differential Revision: https://reviews.freebsd.org/D54495
---
 .../linuxkpi/common/include/linux/compiler.h       | 48 +--------------------
 .../common/include/linux/compiler_attributes.h     | 49 ++++++++++++++++++++++
 .../linuxkpi/common/include/linux/compiler_types.h | 45 ++++++++++++++++++++
 3 files changed, 96 insertions(+), 46 deletions(-)

diff --git a/sys/compat/linuxkpi/common/include/linux/compiler.h 
b/sys/compat/linuxkpi/common/include/linux/compiler.h
index 4146c829b936..90d907dd4d45 100644
--- a/sys/compat/linuxkpi/common/include/linux/compiler.h
+++ b/sys/compat/linuxkpi/common/include/linux/compiler.h
@@ -33,48 +33,18 @@
 #include <sys/cdefs.h>
 #include <sys/endian.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)
+#include <compat/linuxkpi/common/include/linux/compiler_types.h>
+
 #define        __bitwise
 #define __devinitdata
-#ifndef        __deprecated
-#define        __deprecated
-#endif
 #define __init
 #define        __initconst
 #define        __devinit
 #define        __devexit
 #define __exit
-#define        __rcu
-#define        __percpu
-#define        __weak __weak_symbol
-#define        __malloc
-#define        __attribute_const__             __attribute__((__const__))
-#undef __always_inline
-#define        __always_inline                 inline
-#define        noinline                        __noinline
-#define        noinline_for_stack              __noinline
 #define        ____cacheline_aligned           __aligned(CACHE_LINE_SIZE)
 #define        ____cacheline_aligned_in_smp    __aligned(CACHE_LINE_SIZE)
-#define        fallthrough                     /* FALLTHROUGH */ do { } 
while(0)
 
-#if __has_attribute(__nonstring__)
-#define        __nonstring                     __attribute__((__nonstring__))
-#else
-#define        __nonstring
-#endif
 #if __has_attribute(__counted_by__)
 #define        __counted_by(_x)                
__attribute__((__counted_by__(_x)))
 #else
@@ -93,24 +63,12 @@
 #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 __diag_push()
-#define __diag_pop()
-#define __diag_ignore_all(...)
 
 #define        barrier()                       __asm__ __volatile__("": : 
:"memory")
 
 #define        lower_32_bits(n)                ((u32)(n))
 #define        upper_32_bits(n)                ((u32)(((n) >> 16) >> 16))
 
-#define        ___PASTE(a,b) a##b
-#define        __PASTE(a,b) ___PASTE(a,b)
-
 #define        WRITE_ONCE(x,v) do {            \
        barrier();                      \
        (*(volatile __typeof(x) *)(uintptr_t)&(x)) = (v); \
@@ -129,8 +87,6 @@
 #define        lockless_dereference(p) READ_ONCE(p)
 
 #define        _AT(T,X)        ((T)(X))
-
-#define        __same_type(a, b)       __builtin_types_compatible_p(typeof(a), 
typeof(b))
 #define        __must_be_array(a)      __same_type(a, &(a)[0])
 
 #define        sizeof_field(_s, _m)    sizeof(((_s *)0)->_m)
diff --git a/sys/compat/linuxkpi/common/include/linux/compiler_attributes.h 
b/sys/compat/linuxkpi/common/include/linux/compiler_attributes.h
new file mode 100644
index 000000000000..42908bb6c2b5
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/linux/compiler_attributes.h
@@ -0,0 +1,49 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2010 Isilon Systems, Inc.
+ * Copyright (c) 2010 iX Systems, Inc.
+ * Copyright (c) 2010 Panasas, Inc.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
+ * Copyright (c) 2015 François Tigeot
+ * All rights reserved.
+ */
+
+#ifndef        _LINUXKPI_LINUX_COMPILER_ATTRIBUTES_H_
+#define        _LINUXKPI_LINUX_COMPILER_ATTRIBUTES_H_
+
+#include <sys/cdefs.h>
+
+#define        __attribute_const__             __attribute__((__const__))
+
+#ifndef        __deprecated
+#define        __deprecated
+#endif
+
+#define        fallthrough                     /* FALLTHROUGH */ do { } 
while(0)
+
+#undef __always_inline
+#define        __always_inline                 inline
+
+#define        __printf(a,b)                   __printflike(a,b)
+
+#define        __malloc
+
+#define        noinline                        __noinline
+
+#if __has_attribute(__nonstring__)
+#define        __nonstring                     __attribute__((__nonstring__))
+#else
+#define        __nonstring
+#endif
+
+#define        noinline_for_stack              __noinline
+
+#define        __maybe_unused                  __unused
+#define        __always_unused                 __unused
+
+#define        __must_check                    __result_use_check
+
+#define        __weak __weak_symbol
+
+#endif
diff --git a/sys/compat/linuxkpi/common/include/linux/compiler_types.h 
b/sys/compat/linuxkpi/common/include/linux/compiler_types.h
new file mode 100644
index 000000000000..7151c03de690
--- /dev/null
+++ b/sys/compat/linuxkpi/common/include/linux/compiler_types.h
@@ -0,0 +1,45 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2010 Isilon Systems, Inc.
+ * Copyright (c) 2010 iX Systems, Inc.
+ * Copyright (c) 2010 Panasas, Inc.
+ * Copyright (c) 2013-2016 Mellanox Technologies, Ltd.
+ * Copyright (c) 2015 François Tigeot
+ * All rights reserved.
+ */
+
+#ifndef        _LINUXKPI_LINUX_COMPILER_TYPES_H_
+#define        _LINUXKPI_LINUX_COMPILER_TYPES_H_
+
+#include <sys/cdefs.h>
+
+#include <compat/linuxkpi/common/include/linux/compiler_attributes.h>
+
+#define        __kernel
+#define        __user
+#define        __iomem
+#define        __percpu
+#define        __rcu
+#define        __chk_user_ptr(x)               ((void)0)
+#define        __chk_io_ptr(x)                 ((void)0)
+#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        __force
+#define        __nocast
+#define        __safe
+#define        __builtin_warning(x, y...)      (1)
+
+#define        ___PASTE(a,b) a##b
+#define        __PASTE(a,b) ___PASTE(a,b)
+
+#define        __diag_push()
+#define        __diag_pop()
+#define        __diag_ignore_all(...)
+
+#define        __same_type(a, b)       __builtin_types_compatible_p(typeof(a), 
typeof(b))
+
+#endif

Reply via email to