OSDN Git Service

libbpf: xsk: Move barriers from libbpf_util.h to xsk.h
authorBjörn Töpel <bjorn.topel@intel.com>
Wed, 10 Mar 2021 08:09:29 +0000 (09:09 +0100)
committerAndrii Nakryiko <andrii@kernel.org>
Wed, 10 Mar 2021 21:45:16 +0000 (13:45 -0800)
The only user of libbpf_util.h is xsk.h. Move the barriers to xsk.h,
and remove libbpf_util.h. The barriers are used as an implementation
detail, and should not be considered part of the stable API.

Signed-off-by: Björn Töpel <bjorn.topel@intel.com>
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20210310080929.641212-3-bjorn.topel@gmail.com
tools/lib/bpf/Makefile
tools/lib/bpf/libbpf_util.h [deleted file]
tools/lib/bpf/xsk.h

index 8170f88..f45bacb 100644 (file)
@@ -228,7 +228,6 @@ install_headers: $(BPF_HELPER_DEFS)
                $(call do_install,bpf.h,$(prefix)/include/bpf,644); \
                $(call do_install,libbpf.h,$(prefix)/include/bpf,644); \
                $(call do_install,btf.h,$(prefix)/include/bpf,644); \
-               $(call do_install,libbpf_util.h,$(prefix)/include/bpf,644); \
                $(call do_install,libbpf_common.h,$(prefix)/include/bpf,644); \
                $(call do_install,xsk.h,$(prefix)/include/bpf,644); \
                $(call do_install,bpf_helpers.h,$(prefix)/include/bpf,644); \
diff --git a/tools/lib/bpf/libbpf_util.h b/tools/lib/bpf/libbpf_util.h
deleted file mode 100644 (file)
index 954da9b..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/* SPDX-License-Identifier: (LGPL-2.1 OR BSD-2-Clause) */
-/* Copyright (c) 2019 Facebook */
-
-#ifndef __LIBBPF_LIBBPF_UTIL_H
-#define __LIBBPF_LIBBPF_UTIL_H
-
-#include <stdbool.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* Load-Acquire Store-Release barriers used by the XDP socket
- * library. The following macros should *NOT* be considered part of
- * the xsk.h API, and is subject to change anytime.
- *
- * LIBRARY INTERNAL
- */
-
-#define __XSK_READ_ONCE(x) (*(volatile typeof(x) *)&x)
-#define __XSK_WRITE_ONCE(x, v) (*(volatile typeof(x) *)&x) = (v)
-
-#if defined(__i386__) || defined(__x86_64__)
-# define libbpf_smp_store_release(p, v)                                        \
-       do {                                                            \
-               asm volatile("" : : : "memory");                        \
-               __XSK_WRITE_ONCE(*p, v);                                \
-       } while (0)
-# define libbpf_smp_load_acquire(p)                                    \
-       ({                                                              \
-               typeof(*p) ___p1 = __XSK_READ_ONCE(*p);                 \
-               asm volatile("" : : : "memory");                        \
-               ___p1;                                                  \
-       })
-#elif defined(__aarch64__)
-# define libbpf_smp_store_release(p, v)                                        \
-               asm volatile ("stlr %w1, %0" : "=Q" (*p) : "r" (v) : "memory")
-# define libbpf_smp_load_acquire(p)                                    \
-       ({                                                              \
-               typeof(*p) ___p1;                                       \
-               asm volatile ("ldar %w0, %1"                            \
-                             : "=r" (___p1) : "Q" (*p) : "memory");    \
-               ___p1;                                                  \
-       })
-#elif defined(__riscv)
-# define libbpf_smp_store_release(p, v)                                        \
-       do {                                                            \
-               asm volatile ("fence rw,w" : : : "memory");             \
-               __XSK_WRITE_ONCE(*p, v);                                \
-       } while (0)
-# define libbpf_smp_load_acquire(p)                                    \
-       ({                                                              \
-               typeof(*p) ___p1 = __XSK_READ_ONCE(*p);                 \
-               asm volatile ("fence r,rw" : : : "memory");             \
-               ___p1;                                                  \
-       })
-#endif
-
-#ifndef libbpf_smp_store_release
-#define libbpf_smp_store_release(p, v)                                 \
-       do {                                                            \
-               __sync_synchronize();                                   \
-               __XSK_WRITE_ONCE(*p, v);                                \
-       } while (0)
-#endif
-
-#ifndef libbpf_smp_load_acquire
-#define libbpf_smp_load_acquire(p)                                     \
-       ({                                                              \
-               typeof(*p) ___p1 = __XSK_READ_ONCE(*p);                 \
-               __sync_synchronize();                                   \
-               ___p1;                                                  \
-       })
-#endif
-
-/* LIBRARY INTERNAL -- END */
-
-#ifdef __cplusplus
-} /* extern "C" */
-#endif
-
-#endif
index a9fdea8..01c12dc 100644 (file)
@@ -3,7 +3,8 @@
 /*
  * AF_XDP user-space access library.
  *
- * Copyright(c) 2018 - 2019 Intel Corporation.
+ * Copyright (c) 2018 - 2019 Intel Corporation.
+ * Copyright (c) 2019 Facebook
  *
  * Author(s): Magnus Karlsson <magnus.karlsson@intel.com>
  */
 
 #include <stdio.h>
 #include <stdint.h>
+#include <stdbool.h>
 #include <linux/if_xdp.h>
 
 #include "libbpf.h"
-#include "libbpf_util.h"
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
+/* Load-Acquire Store-Release barriers used by the XDP socket
+ * library. The following macros should *NOT* be considered part of
+ * the xsk.h API, and is subject to change anytime.
+ *
+ * LIBRARY INTERNAL
+ */
+
+#define __XSK_READ_ONCE(x) (*(volatile typeof(x) *)&x)
+#define __XSK_WRITE_ONCE(x, v) (*(volatile typeof(x) *)&x) = (v)
+
+#if defined(__i386__) || defined(__x86_64__)
+# define libbpf_smp_store_release(p, v)                                        \
+       do {                                                            \
+               asm volatile("" : : : "memory");                        \
+               __XSK_WRITE_ONCE(*p, v);                                \
+       } while (0)
+# define libbpf_smp_load_acquire(p)                                    \
+       ({                                                              \
+               typeof(*p) ___p1 = __XSK_READ_ONCE(*p);                 \
+               asm volatile("" : : : "memory");                        \
+               ___p1;                                                  \
+       })
+#elif defined(__aarch64__)
+# define libbpf_smp_store_release(p, v)                                        \
+               asm volatile ("stlr %w1, %0" : "=Q" (*p) : "r" (v) : "memory")
+# define libbpf_smp_load_acquire(p)                                    \
+       ({                                                              \
+               typeof(*p) ___p1;                                       \
+               asm volatile ("ldar %w0, %1"                            \
+                             : "=r" (___p1) : "Q" (*p) : "memory");    \
+               ___p1;                                                  \
+       })
+#elif defined(__riscv)
+# define libbpf_smp_store_release(p, v)                                        \
+       do {                                                            \
+               asm volatile ("fence rw,w" : : : "memory");             \
+               __XSK_WRITE_ONCE(*p, v);                                \
+       } while (0)
+# define libbpf_smp_load_acquire(p)                                    \
+       ({                                                              \
+               typeof(*p) ___p1 = __XSK_READ_ONCE(*p);                 \
+               asm volatile ("fence r,rw" : : : "memory");             \
+               ___p1;                                                  \
+       })
+#endif
+
+#ifndef libbpf_smp_store_release
+#define libbpf_smp_store_release(p, v)                                 \
+       do {                                                            \
+               __sync_synchronize();                                   \
+               __XSK_WRITE_ONCE(*p, v);                                \
+       } while (0)
+#endif
+
+#ifndef libbpf_smp_load_acquire
+#define libbpf_smp_load_acquire(p)                                     \
+       ({                                                              \
+               typeof(*p) ___p1 = __XSK_READ_ONCE(*p);                 \
+               __sync_synchronize();                                   \
+               ___p1;                                                  \
+       })
+#endif
+
+/* LIBRARY INTERNAL -- END */
+
 /* Do not access these members directly. Use the functions below. */
 #define DEFINE_XSK_RING(name) \
 struct name { \