| From e1e455f4f4d35850c30235747620d0d078fe9f64 Mon Sep 17 00:00:00 2001 |
| From: Vinson Lee <vlee@twitter.com> |
| Date: Mon, 23 Mar 2015 12:09:16 -0700 |
| Subject: perf tools: Work around lack of sched_getcpu in glibc < 2.6. |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Vinson Lee <vlee@twitter.com> |
| |
| commit e1e455f4f4d35850c30235747620d0d078fe9f64 upstream. |
| |
| This patch fixes this build error with glibc < 2.6. |
| |
| CC util/cloexec.o |
| cc1: warnings being treated as errors |
| util/cloexec.c: In function ‘perf_flag_probe’: |
| util/cloexec.c:24: error: implicit declaration of function |
| ‘sched_getcpu’ |
| util/cloexec.c:24: error: nested extern declaration of ‘sched_getcpu’ |
| make: *** [util/cloexec.o] Error 1 |
| |
| Signed-off-by: Vinson Lee <vlee@twitter.com> |
| Acked-by: Jiri Olsa <jolsa@kernel.org> |
| Acked-by: Namhyung Kim <namhyung@kernel.org> |
| Cc: Adrian Hunter <adrian.hunter@intel.com> |
| Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> |
| Cc: Paul Mackerras <paulus@samba.org> |
| Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> |
| Cc: Yann Droneaud <ydroneaud@opteya.com> |
| Link: http://lkml.kernel.org/r/1427137761-16119-1-git-send-email-vlee@twopensource.com |
| Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| tools/perf/util/cloexec.c | 6 ++++++ |
| tools/perf/util/cloexec.h | 6 ++++++ |
| 2 files changed, 12 insertions(+) |
| |
| --- a/tools/perf/util/cloexec.c |
| +++ b/tools/perf/util/cloexec.c |
| @@ -7,6 +7,12 @@ |
| |
| static unsigned long flag = PERF_FLAG_FD_CLOEXEC; |
| |
| +int __weak sched_getcpu(void) |
| +{ |
| + errno = ENOSYS; |
| + return -1; |
| +} |
| + |
| static int perf_flag_probe(void) |
| { |
| /* use 'safest' configuration as used in perf_evsel__fallback() */ |
| --- a/tools/perf/util/cloexec.h |
| +++ b/tools/perf/util/cloexec.h |
| @@ -3,4 +3,10 @@ |
| |
| unsigned long perf_event_open_cloexec_flag(void); |
| |
| +#ifdef __GLIBC_PREREQ |
| +#if !__GLIBC_PREREQ(2, 6) |
| +extern int sched_getcpu(void) __THROW; |
| +#endif |
| +#endif |
| + |
| #endif /* __PERF_CLOEXEC_H */ |