Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 05 Jan 2026 20:09:25 +0000
From:      Jean-=?utf-8?Q?S=C3=A9bast?==?utf-8?Q?ien P=C3=A9?=dron <dumbbell@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 33fa585a0e90 - main - linuxkpi: Split <linux/compiler.h>
Message-ID:  <695c1a75.3ff25.63824e3f@gitrepo.freebsd.org>

index | next in thread | raw e-mail

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 <dumbbell@FreeBSD.org>
AuthorDate: 2025-08-17 11:10:43 +0000
Commit:     Jean-Sébastien Pédron <dumbbell@FreeBSD.org>
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


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?695c1a75.3ff25.63824e3f>