From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
David Ahern <dsahern@gmail.com>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Wang Nan <wangnan0@huawei.com>
Subject: [PATCH 31/35] tools build: Add test for sched_getcpu()
Date: Mon, 6 Mar 2017 16:38:21 -0300 [thread overview]
Message-ID: <20170306193825.24011-32-acme@kernel.org> (raw)
In-Reply-To: <20170306193825.24011-1-acme@kernel.org>
From: Arnaldo Carvalho de Melo <acme@redhat.com>
Instead of trying to go on adding more ifdef conditions, do a feature
test and define HAVE_SCHED_GETCPU_SUPPORT instead, then use it to
provide the prototype. No need to change the stub, as it is already a
__weak symbol.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-yge89er9g90sc0v6k0a0r5tr@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/build/Makefile.feature | 1 +
tools/build/feature/Makefile | 6 +++++-
tools/build/feature/test-all.c | 5 +++++
tools/build/feature/test-sched_getcpu.c | 7 +++++++
tools/perf/Makefile.config | 4 ++++
tools/perf/util/cloexec.h | 6 ------
tools/perf/util/util.h | 4 ++--
7 files changed, 24 insertions(+), 9 deletions(-)
create mode 100644 tools/build/feature/test-sched_getcpu.c
diff --git a/tools/build/Makefile.feature b/tools/build/Makefile.feature
index e3fb5ecbdcb6..523911f316ce 100644
--- a/tools/build/Makefile.feature
+++ b/tools/build/Makefile.feature
@@ -63,6 +63,7 @@ FEATURE_TESTS_BASIC := \
lzma \
get_cpuid \
bpf \
+ sched_getcpu \
sdt
# FEATURE_TESTS_BASIC + FEATURE_TESTS_EXTRA is the complete list
diff --git a/tools/build/feature/Makefile b/tools/build/feature/Makefile
index b564a2eea039..ab1e2bbc2e96 100644
--- a/tools/build/feature/Makefile
+++ b/tools/build/feature/Makefile
@@ -48,7 +48,8 @@ FILES= \
test-get_cpuid.bin \
test-sdt.bin \
test-cxx.bin \
- test-jvmti.bin
+ test-jvmti.bin \
+ test-sched_getcpu.bin
FILES := $(addprefix $(OUTPUT),$(FILES))
@@ -91,6 +92,9 @@ $(OUTPUT)test-libelf.bin:
$(OUTPUT)test-glibc.bin:
$(BUILD)
+$(OUTPUT)test-sched_getcpu.bin:
+ $(BUILD)
+
DWARFLIBS := -ldw
ifeq ($(findstring -static,${LDFLAGS}),-static)
DWARFLIBS += -lelf -lebl -lz -llzma -lbz2
diff --git a/tools/build/feature/test-all.c b/tools/build/feature/test-all.c
index 699e43627397..cc6c7c01f4ca 100644
--- a/tools/build/feature/test-all.c
+++ b/tools/build/feature/test-all.c
@@ -117,6 +117,10 @@
# include "test-pthread-attr-setaffinity-np.c"
#undef main
+#define main main_test_sched_getcpu
+# include "test-sched_getcpu.c"
+#undef main
+
# if 0
/*
* Disable libbabeltrace check for test-all, because the requested
@@ -182,6 +186,7 @@ int main(int argc, char *argv[])
main_test_get_cpuid();
main_test_bpf();
main_test_libcrypto();
+ main_test_sched_getcpu();
main_test_sdt();
return 0;
diff --git a/tools/build/feature/test-sched_getcpu.c b/tools/build/feature/test-sched_getcpu.c
new file mode 100644
index 000000000000..c4a148dd7104
--- /dev/null
+++ b/tools/build/feature/test-sched_getcpu.c
@@ -0,0 +1,7 @@
+#define _GNU_SOURCE
+#include <sched.h>
+
+int main(void)
+{
+ return sched_getcpu();
+}
diff --git a/tools/perf/Makefile.config b/tools/perf/Makefile.config
index 27c9fbca7bd9..2b656de99495 100644
--- a/tools/perf/Makefile.config
+++ b/tools/perf/Makefile.config
@@ -317,6 +317,10 @@ ifdef NO_DWARF
NO_LIBDW_DWARF_UNWIND := 1
endif
+ifeq ($(feature-sched_getcpu), 1)
+ CFLAGS += -DHAVE_SCHED_GETCPU_SUPPORT
+endif
+
ifndef NO_LIBELF
CFLAGS += -DHAVE_LIBELF_SUPPORT
EXTLIBS += -lelf
diff --git a/tools/perf/util/cloexec.h b/tools/perf/util/cloexec.h
index d0d465953d36..94a5a7d829d5 100644
--- a/tools/perf/util/cloexec.h
+++ b/tools/perf/util/cloexec.h
@@ -3,10 +3,4 @@
unsigned long perf_event_open_cloexec_flag(void);
-#ifdef __GLIBC_PREREQ
-#if !__GLIBC_PREREQ(2, 6) && !defined(__UCLIBC__)
-int sched_getcpu(void) __THROW;
-#endif
-#endif
-
#endif /* __PERF_CLOEXEC_H */
diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h
index c74708da8571..b2cfa47990dc 100644
--- a/tools/perf/util/util.h
+++ b/tools/perf/util/util.h
@@ -355,8 +355,8 @@ void print_binary(unsigned char *data, size_t len,
size_t bytes_per_line, print_binary_t printer,
void *extra);
-#if !defined(__GLIBC__) && !defined(__ANDROID__)
-extern int sched_getcpu(void);
+#ifndef HAVE_SCHED_GETCPU_SUPPORT
+int sched_getcpu(void);
#endif
int is_printable_array(char *p, unsigned int len);
--
2.9.3
next prev parent reply other threads:[~2017-03-06 19:46 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-06 19:37 [GIT PULL 00/35] perf/core improvements and fixes Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 01/35] perf vendor events: Add mapping for KnightsMill PMU events Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 02/35] perf stat: Issue a HW watchdog disable hint Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 03/35] tools include: Adopt __compiletime_error Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 04/35] tools arch x86: Include asm/cmpxchg.h Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 05/35] tools arch x86: Introduce atomic_cmpxchg() Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 06/35] tools include: Introduce atomic_cmpxchg_{relaxed,release}() Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 07/35] tools include: Provide gcc based cmpxchg fallback for !x86 Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 08/35] tools include: Add UINT_MAX def to kernel.h Arnaldo Carvalho de Melo
2017-03-06 19:37 ` [PATCH 09/35] tools include: Adopt kernel's refcount.h Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 10/35] perf cgroup: Convert cgroup_sel.refcnt from atomic_t to refcount_t Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 11/35] perf cpumap: Convert cpu_map.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 12/35] perf comm: Convert comm_str.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 13/35] perf dso: Convert dso.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 14/35] perf map: Convert map.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 15/35] perf map: Convert map_groups.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 16/35] perf evlist: Convert perf_map.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 17/35] perf thread: convert thread.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 18/35] perf thread_map: Convert thread_map.refcnt " Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 19/35] perf evlist: Clarify a bit the use of perf_mmap->refcnt Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 20/35] perf tools: Allow sorting by symbol size Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 21/35] perf ftrace: Add support for --pid option Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 22/35] perf cpumap: Introduce cpu_map__snprint_mask() Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 23/35] perf ftrace: Add support for -a and -C option Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 24/35] perf ftrace: Use pager for displaying result Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 25/35] kretprobes: Ensure probe location is at function entry Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 26/35] trace/kprobes: Allow return probes with offsets and absolute addresses Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 27/35] perf probe: Generalize probe event file open routine Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 28/35] perf intel-PT/BTS: Add missing initialization Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 29/35] trace/kprobes: Add back warning about offset in return probes Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 30/35] perf tools: Force uncore events to system wide monitoring Arnaldo Carvalho de Melo
2017-03-06 19:38 ` Arnaldo Carvalho de Melo [this message]
2017-03-06 19:38 ` [PATCH 32/35] perf bench futex: Use __maybe_unused Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 33/35] perf bench futex: Fix build on musl + clang Arnaldo Carvalho de Melo
2017-09-08 8:04 ` Jörg Krause
2017-09-08 13:47 ` Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 34/35] tools build: Use the same CC for feature detection and actual build Arnaldo Carvalho de Melo
2017-03-06 19:38 ` [PATCH 35/35] perf bench numa: Add more comment for -c option Arnaldo Carvalho de Melo
2017-03-07 7:17 ` [GIT PULL 00/35] perf/core improvements and fixes Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170306193825.24011-32-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome