From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Vinson Lee <vlee@twopensource.com>
Cc: Jiri Olsa <jolsa@redhat.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Paul Mackerras <paulus@samba.org>, Ingo Molnar <mingo@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
Namhyung Kim <namhyung@kernel.org>,
Yann Droneaud <ydroneaud@opteya.com>,
LKML <linux-kernel@vger.kernel.org>,
linux-perf-users@vger.kernel.org, Vinson Lee <vlee@twitter.com>
Subject: Re: [PATCH v2] perf tools: Work around lack of sched_getcpu in glibc < 2.6.
Date: Fri, 20 Mar 2015 17:38:28 -0300 [thread overview]
Message-ID: <20150320203828.GN16485@kernel.org> (raw)
In-Reply-To: <CAHTgTXUqBj9rE8yXm=XtzhKC0G+H-ZYuhG5GZpk858p0=Egc2g@mail.gmail.com>
Em Fri, Mar 20, 2015 at 11:44:42AM -0700, Vinson Lee escreveu:
> On Fri, Mar 20, 2015 at 6:03 AM, Arnaldo Carvalho de Melo <acme@kernel.org> wrote:
> > So for strlcpy we have in tools/perf/util/cache.h:
> > #ifndef __UCLIBC__
> > /* Matches the libc/libbsd function attribute so we declare this
> > * unconditionally: */
> > extern size_t strlcpy(char *dest, const char *src, size_t size);
> > #endif
> > I.e. have the ifdef just in the header file.
This part you didn't take into account, the __weak marked part is ok,
the linker will DTRT with that, its just the redeclaration part that
needs to get out of the way, enclose that under appropriate ifdef, i.e.
one that is associated with the libc where that file first appeared and
that has been present since then.
- Arnaldo
> > This way, if we end up needing to use sched_getcpu elsewhere, it will
> > work and the needed #ifdef will be constrained to the header file.
> I tried moving the prototype to a header file and it does not compile
> with newer glibc for me either. I still get a "redundant
> redeclaration" compiler error.
> Here is the diff that I tried.
> diff --git 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() */
> diff --git a/tools/perf/util/cloexec.h b/tools/perf/util/cloexec.h
> @@ -3,4 +3,6 @@
>
> unsigned long perf_event_open_cloexec_flag(void);
>
> +extern int sched_getcpu(void) __THROW;
> +
> #endif /* __PERF_CLOEXEC_H */
next prev parent reply other threads:[~2015-03-20 20:39 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-14 2:06 [PATCH] perf tools: Work around lack of sched_getcpu in glibc < 2.6 Vinson Lee
2015-02-16 20:50 ` Yann Droneaud
2015-03-17 23:49 ` Vinson Lee
2015-03-18 9:15 ` Peter Zijlstra
2015-03-18 23:11 ` [PATCH v2] " Vinson Lee
2015-03-19 10:13 ` Jiri Olsa
2015-03-19 13:14 ` Arnaldo Carvalho de Melo
2015-03-19 21:12 ` Vinson Lee
2015-03-20 13:03 ` Arnaldo Carvalho de Melo
2015-03-20 18:44 ` Vinson Lee
2015-03-20 20:38 ` Arnaldo Carvalho de Melo [this message]
2015-03-23 19:09 ` [PATCH v3] " Vinson Lee
2015-03-24 0:21 ` Namhyung Kim
2015-03-24 7:10 ` Jiri Olsa
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=20150320203828.GN16485@kernel.org \
--to=acme@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=adrian.hunter@intel.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
--cc=vlee@twitter.com \
--cc=vlee@twopensource.com \
--cc=ydroneaud@opteya.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;
as well as URLs for NNTP newsgroup(s).