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