Page MenuHomeFreeBSD

D46144.id141409.diff
No OneTemporary

D46144.id141409.diff

diff --git a/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h b/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h
--- a/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h
+++ b/sys/contrib/openzfs/include/os/freebsd/linux/compiler.h
@@ -1,101 +1,40 @@
/*
- * 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
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice unmodified, 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 ``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 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.
- *
- * $FreeBSD$
+ * Various compatibility macros that ZFS needs for FreeBSD to provide that Linux
+ * already provides, or that are in the Linux os library compat stuff.
*/
-#ifndef _LINUX_COMPILER_H_
-#define _LINUX_COMPILER_H_
+#pragma once
#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)
+#include <compat/linuxkpi/common/include/linux/compiler.h>
+
#define zfs_fallthrough __attribute__((__fallthrough__))
-#if !defined(_KERNEL) && !defined(_STANDALONE)
-#define likely(x) __builtin_expect(!!(x), 1)
-#define unlikely(x) __builtin_expect(!!(x), 0)
+/*
+ * Older LinuxKPI code where some or all of these aren't defined. Provide them
+ * all here.
+ */
+#ifndef ACCESS_ONCE
+#define ACCESS_ONCE(x) (*(volatile __typeof(x) *)(uintptr_t)&(x))
#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 { \
+#ifndef WRITE_ONCE
+#define WRITE_ONCE(x,v) do { \
barrier(); \
ACCESS_ONCE(x) = (v); \
barrier(); \
} while (0)
+#endif
-#define lockless_dereference(p) READ_ONCE(p)
-
-#define _AT(T, X) ((T)(X))
-
-#endif /* _LINUX_COMPILER_H_ */
+#ifndef READ_ONCE
+#define READ_ONCE(x) ({ \
+ __typeof(x) __var = ({ \
+ barrier(); \
+ ACCESS_ONCE(x); \
+ }); \
+ barrier(); \
+ __var; \
+})
+#endif
diff --git a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h
--- a/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h
+++ b/sys/contrib/openzfs/include/os/freebsd/spl/sys/ccompat.h
@@ -112,15 +112,6 @@
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
--- 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 @@
#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)

File Metadata

Mime Type
text/plain
Expires
Sat, Jan 3, 3:59 AM (15 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
27467385
Default Alt Text
D46144.id141409.diff (5 KB)

Event Timeline