aboutsummaryrefslogtreecommitdiffstats
path: root/package/devel/perf/musl-compat.h
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2016-01-02 14:47:57 +0000
committerFelix Fietkau <nbd@openwrt.org>2016-01-02 14:47:57 +0000
commit6467fef4198d9deaf2c9bf47a14ec5fd00dd9b75 (patch)
treee1c48b15f97aedd788b2ee61aa760bc053c0659b /package/devel/perf/musl-compat.h
parentd3e233f02c7c360b8638737b6a18a479b2898c70 (diff)
downloadupstream-6467fef4198d9deaf2c9bf47a14ec5fd00dd9b75.tar.gz
upstream-6467fef4198d9deaf2c9bf47a14ec5fd00dd9b75.tar.bz2
upstream-6467fef4198d9deaf2c9bf47a14ec5fd00dd9b75.zip
perf: fix musl compatibility
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 48067
Diffstat (limited to 'package/devel/perf/musl-compat.h')
-rw-r--r--package/devel/perf/musl-compat.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/package/devel/perf/musl-compat.h b/package/devel/perf/musl-compat.h
new file mode 100644
index 0000000000..ecfbec6a29
--- /dev/null
+++ b/package/devel/perf/musl-compat.h
@@ -0,0 +1,62 @@
+#ifndef __PERF_MUSL_COMPAT_H
+#define __PERF_MUSL_COMPAT_H
+
+#include <sys/ioctl.h>
+#include <string.h>
+#include <unistd.h>
+#include <stdio.h>
+#include <syscall.h>
+#include <sched.h>
+
+#undef _IOWR
+#undef _IOR
+#undef _IOW
+#undef _IOC
+#undef _IO
+
+/* Change XSI compliant version into GNU extension hackery */
+#define strerror_r(err, buf, buflen) \
+ (strerror_r(err, buf, buflen) ? NULL : buf)
+
+#define _SC_LEVEL1_DCACHE_LINESIZE -1
+
+static inline long sysconf_wrap(int name)
+{
+ FILE *f;
+ int val;
+
+ switch (name) {
+ case _SC_LEVEL1_DCACHE_LINESIZE:
+ f = fopen("/sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size", "r");
+ if (!f)
+ return 0;
+
+ if (fscanf(f, "%d", &val) != 1)
+ return 0;
+
+ fclose(f);
+ return val;
+ default:
+ return sysconf(name);
+ }
+}
+
+#define sysconf(_n) sysconf_wrap(_n)
+
+static inline int compat_sched_getcpu(void)
+{
+#ifdef __NR_getcpu
+ unsigned int val;
+
+ if (syscall(__NR_getcpu, &val))
+ return -1;
+
+ return val;
+#else
+ return -1;
+#endif
+}
+
+#define sched_getcpu compat_sched_getcpu
+
+#endif