linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Andi Kleen <andi@firstfloor.org>
Cc: jolsa@kernel.org, sukadev@linux.vnet.ibm.com, eranian@google.com,
	linux-kernel@vger.kernel.org, Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH 01/10] perf, tools: Factor out scale conversion code
Date: Fri, 14 Oct 2016 12:35:57 -0300	[thread overview]
Message-ID: <20161014153557.GD12815@kernel.org> (raw)
In-Reply-To: <1476393332-20732-2-git-send-email-andi@firstfloor.org>

Em Thu, Oct 13, 2016 at 02:15:23PM -0700, Andi Kleen escreveu:
> From: Andi Kleen <ak@linux.intel.com>
> 
> Move the scale factor parsing code to an own function
> to reuse it in an upcoming patch.
> 
> Signed-off-by: Andi Kleen <ak@linux.intel.com>
> ---
>  tools/perf/util/pmu.c | 64 +++++++++++++++++++++++++++------------------------
>  1 file changed, 34 insertions(+), 30 deletions(-)
> 
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index b1474dcadfa2..9adae7e7477c 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -94,32 +94,10 @@ static int pmu_format(const char *name, struct list_head *format)
>  	return 0;
>  }
>  
> -static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *name)
> +static double convert_scale(const char *scale, char **end)
>  {
> -	struct stat st;
> -	ssize_t sret;
> -	char scale[128];
> -	int fd, ret = -1;
> -	char path[PATH_MAX];
>  	char *lc;
> -
> -	snprintf(path, PATH_MAX, "%s/%s.scale", dir, name);
> -
> -	fd = open(path, O_RDONLY);
> -	if (fd == -1)
> -		return -1;
> -
> -	if (fstat(fd, &st) < 0)
> -		goto error;
> -
> -	sret = read(fd, scale, sizeof(scale)-1);
> -	if (sret < 0)
> -		goto error;
> -
> -	if (scale[sret - 1] == '\n')
> -		scale[sret - 1] = '\0';
> -	else
> -		scale[sret] = '\0';
> +	double sval;
>  
>  	/*
>  	 * save current locale
> @@ -132,10 +110,8 @@ static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *
>  	 * call below.
>  	 */
>  	lc = strdup(lc);
> -	if (!lc) {
> -		ret = -ENOMEM;
> -		goto error;
> -	}
> +	if (!lc)
> +		return 1.0;

So if we can't convert the scale because of an allocation failure
related to locale issues we silently trow it away and do no scale at
all?

- Arnaldo

>  
>  	/*
>  	 * force to C locale to ensure kernel
> @@ -144,13 +120,41 @@ static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *
>  	 */
>  	setlocale(LC_NUMERIC, "C");
>  
> -	alias->scale = strtod(scale, NULL);
> +	sval = strtod(scale, end);
>  
>  	/* restore locale */
>  	setlocale(LC_NUMERIC, lc);
> -
>  	free(lc);
> +	return sval;
> +}
> +
> +static int perf_pmu__parse_scale(struct perf_pmu_alias *alias, char *dir, char *name)
> +{
> +	struct stat st;
> +	ssize_t sret;
> +	char scale[128];
> +	int fd, ret = -1;
> +	char path[PATH_MAX];
> +
> +	snprintf(path, PATH_MAX, "%s/%s.scale", dir, name);
> +
> +	fd = open(path, O_RDONLY);
> +	if (fd == -1)
> +		return -1;
> +
> +	if (fstat(fd, &st) < 0)
> +		goto error;
> +
> +	sret = read(fd, scale, sizeof(scale)-1);
> +	if (sret < 0)
> +		goto error;
> +
> +	if (scale[sret - 1] == '\n')
> +		scale[sret - 1] = '\0';
> +	else
> +		scale[sret] = '\0';
>  
> +	alias->scale = convert_scale(scale, NULL);
>  	ret = 0;
>  error:
>  	close(fd);
> -- 
> 2.5.5

  reply	other threads:[~2016-10-14 15:36 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-13 21:15 Support Intel uncore event lists Andi Kleen
2016-10-13 21:15 ` [PATCH 01/10] perf, tools: Factor out scale conversion code Andi Kleen
2016-10-14 15:35   ` Arnaldo Carvalho de Melo [this message]
2016-10-14 15:45     ` Andi Kleen
2016-10-14 16:08       ` Arnaldo Carvalho de Melo
2016-10-14 16:15         ` Andi Kleen
2016-10-14 16:25           ` Arnaldo Carvalho de Melo
2016-10-14 16:36             ` Andi Kleen
2016-10-14 16:38               ` Arnaldo Carvalho de Melo
2016-10-13 21:15 ` [PATCH 02/10] perf, tools: Only print Using CPUID message once Andi Kleen
2016-10-14 15:44   ` Arnaldo Carvalho de Melo
2016-10-24 19:02   ` [tip:perf/core] perf pmu: " tip-bot for Andi Kleen
2016-10-13 21:15 ` [PATCH 03/10] perf, tools: Add support for parsing uncore json files Andi Kleen
2016-10-14  9:07   ` Jiri Olsa
2016-10-14 12:18   ` Jiri Olsa
2016-10-14 12:21   ` Jiri Olsa
2016-10-14 12:23   ` Jiri Olsa
2016-10-14 15:32     ` Andi Kleen
2016-10-13 21:15 ` [PATCH 04/10] perf, tools: Support per pmu json aliases Andi Kleen
2016-10-14 12:31   ` Jiri Olsa
2016-10-13 21:15 ` [PATCH 05/10] perf, tools: Support event aliases for non cpu// pmus Andi Kleen
2016-10-17  9:35   ` Jiri Olsa
2016-10-17 10:28   ` Jiri Olsa
2016-10-13 21:15 ` [PATCH 06/10] perf, tools: Add debug support for outputing alias string Andi Kleen
2016-10-13 21:15 ` [PATCH 07/10] perf, tools: Collapse identically named events in perf stat Andi Kleen
2016-10-17 10:55   ` Jiri Olsa
2016-10-17 11:23   ` Jiri Olsa
2016-10-17 11:26   ` Jiri Olsa
2016-10-17 16:30     ` Andi Kleen
2016-10-17 17:28       ` Jiri Olsa
2016-10-17 18:12         ` Andi Kleen
2016-10-13 21:15 ` [PATCH 08/10] perf, tools: Expand PMU events by prefix match Andi Kleen
2016-10-17 11:35   ` Jiri Olsa
2016-10-17 11:40   ` Jiri Olsa
2016-10-17 16:56     ` Andi Kleen
2016-10-17 17:26       ` Jiri Olsa
2016-10-13 21:15 ` [PATCH 09/10] perf, tools: Support DividedBy header in JSON event list Andi Kleen
2016-10-17 11:44   ` Jiri Olsa
2016-10-17 16:27     ` Andi Kleen
2016-10-17 17:43       ` Jiri Olsa
2016-10-17 17:46         ` Jiri Olsa
2016-10-17 18:28         ` Andi Kleen
2016-10-13 21:15 ` [PATCH 10/10] perf, tools, stat: Output generic dividedby metric Andi Kleen
2016-10-17 10:58 ` Support Intel uncore event lists Jiri Olsa
  -- strict thread matches above, loose matches on Subject: below --
2016-11-19  0:36 Support Intel uncore event lists in perf Andi Kleen
2016-11-19  0:36 ` [PATCH 01/10] perf, tools: Factor out scale conversion code Andi Kleen
2016-11-23  9:26   ` Jiri Olsa
2016-11-23  9:46   ` 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=20161014153557.GD12815@kernel.org \
    --to=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=andi@firstfloor.org \
    --cc=eranian@google.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sukadev@linux.vnet.ibm.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).