summaryrefslogtreecommitdiff
path: root/src/xdp/include/perf-sys.h
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-12-18 17:13:13 +0100
committerChristian Poessinger <christian@poessinger.com>2020-12-19 21:56:19 +0100
commitb5c80d310527223b93e4133ac2f4c8c063c70a98 (patch)
tree48ae9e2752b4b94c07f767a019c99a8c2460c014 /src/xdp/include/perf-sys.h
parent22308b05dfbcd8da0230bbd8ba3bbc2a55da7786 (diff)
downloadvyos-1x-b5c80d310527223b93e4133ac2f4c8c063c70a98.tar.gz
vyos-1x-b5c80d310527223b93e4133ac2f4c8c063c70a98.zip
xdp: T2666: switch to example code provided by xdp-tutorial
Diffstat (limited to 'src/xdp/include/perf-sys.h')
-rw-r--r--src/xdp/include/perf-sys.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/xdp/include/perf-sys.h b/src/xdp/include/perf-sys.h
new file mode 100644
index 000000000..2fd16e482
--- /dev/null
+++ b/src/xdp/include/perf-sys.h
@@ -0,0 +1,77 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copied from $(LINUX)/tools/perf/perf-sys.h (kernel 4.18) */
+#ifndef _PERF_SYS_H
+#define _PERF_SYS_H
+
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/syscall.h>
+#include <linux/types.h>
+#include <linux/perf_event.h>
+/*
+ * remove the following headers to allow for userspace program compilation
+ * #include <linux/compiler.h>
+ * #include <asm/barrier.h>
+ */
+#ifdef __powerpc__
+#define CPUINFO_PROC {"cpu"}
+#endif
+
+#ifdef __s390__
+#define CPUINFO_PROC {"vendor_id"}
+#endif
+
+#ifdef __sh__
+#define CPUINFO_PROC {"cpu type"}
+#endif
+
+#ifdef __hppa__
+#define CPUINFO_PROC {"cpu"}
+#endif
+
+#ifdef __sparc__
+#define CPUINFO_PROC {"cpu"}
+#endif
+
+#ifdef __alpha__
+#define CPUINFO_PROC {"cpu model"}
+#endif
+
+#ifdef __arm__
+#define CPUINFO_PROC {"model name", "Processor"}
+#endif
+
+#ifdef __mips__
+#define CPUINFO_PROC {"cpu model"}
+#endif
+
+#ifdef __arc__
+#define CPUINFO_PROC {"Processor"}
+#endif
+
+#ifdef __xtensa__
+#define CPUINFO_PROC {"core ID"}
+#endif
+
+#ifndef CPUINFO_PROC
+#define CPUINFO_PROC { "model name", }
+#endif
+
+static inline int
+sys_perf_event_open(struct perf_event_attr *attr,
+ pid_t pid, int cpu, int group_fd,
+ unsigned long flags)
+{
+ int fd;
+
+ fd = syscall(__NR_perf_event_open, attr, pid, cpu,
+ group_fd, flags);
+
+#ifdef HAVE_ATTR_TEST
+ if (unlikely(test_attr__enabled))
+ test_attr__open(attr, pid, cpu, fd, group_fd, flags);
+#endif
+ return fd;
+}
+
+#endif /* _PERF_SYS_H */