All of lore.kernel.org
 help / color / mirror / Atom feed
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 10:03:13 -0300	[thread overview]
Message-ID: <20150320130313.GB16485@kernel.org> (raw)
In-Reply-To: <CAHTgTXUQVuxf5u_AZ9g-eLtwdrE4rGfiN5cCHA5ReMe0sObiBA@mail.gmail.com>

Em Thu, Mar 19, 2015 at 02:12:05PM -0700, Vinson Lee escreveu:
> On Thu, Mar 19, 2015 at 6:14 AM, Arnaldo Carvalho de Melo
> <acme@kernel.org> wrote:
> > Em Thu, Mar 19, 2015 at 11:13:04AM +0100, Jiri Olsa escreveu:
> >> On Wed, Mar 18, 2015 at 04:11:52PM -0700, Vinson Lee wrote:
> >> > This patch fixes this build error with glibc < 2.6.
> >
> >> > +#ifdef __GLIBC_PREREQ
> >> > +#if !__GLIBC_PREREQ(2, 6)
> >> > +static int sched_getcpu(void)
> >> > +{
> >> > +   errno = ENOSYS;
> >> > +   return -1;
> >> > +}
> >> > +#endif
> >> > +#endif
> >
> >> you could mark it as __weak and get rid of those ifdef's
> >> like we do for strlcpy in utilpath.c
> >
> > Agreed.
 
> I tried this approach but am having trouble getting a patch to compile
> with both older glibc and recent glibc.
 
> With older glibc I will get a "no previous prototype" compilation
> error. I can fix this error by adding a prototype but this results in
> a "redundant redeclaration" error with newer glibc.

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 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.

At some point we should try to move these functions to some
libc-compat.c file and move it to somewhere in tools/lib/.

- Arnaldo

  reply	other threads:[~2015-03-20 13:03 UTC|newest]

Thread overview: 15+ 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 [this message]
2015-03-20 18:44                 ` Vinson Lee
2015-03-20 20:38                   ` Arnaldo Carvalho de Melo
2015-03-23 19:09                     ` [PATCH v3] " Vinson Lee
2015-03-24  0:21                       ` Namhyung Kim
2015-03-24  7:10                       ` Jiri Olsa
2015-03-24 16:32                       ` [tip:perf/core] " tip-bot for Vinson Lee

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=20150320130313.GB16485@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.