Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 48067master
parent
d3e233f02c
commit
6467fef419
@ -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 |
Loading…
Reference in new issue