From a458906480ad9baeffe22783319632aede4d4668 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sat, 2 Jan 2016 14:47:57 +0000 Subject: perf: fix musl compatibility Signed-off-by: Felix Fietkau git-svn-id: svn://svn.openwrt.org/openwrt/trunk@48067 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/devel/perf/musl-compat.h | 62 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 package/devel/perf/musl-compat.h (limited to 'package/devel/perf/musl-compat.h') 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 +#include +#include +#include +#include +#include + +#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 -- cgit v1.2.3