diff options
Diffstat (limited to 'tools/perf/util/expr.c')
| -rw-r--r-- | tools/perf/util/expr.c | 37 | 
1 files changed, 25 insertions, 12 deletions
diff --git a/tools/perf/util/expr.c b/tools/perf/util/expr.c index 666b59baeb70..675f318ce7c1 100644 --- a/tools/perf/util/expr.c +++ b/tools/perf/util/expr.c @@ -405,12 +405,17 @@ double expr_id_data__source_count(const struct expr_id_data *data)  double expr__get_literal(const char *literal)  {  	static struct cpu_topology *topology; +	double result = NAN; -	if (!strcmp("#smt_on", literal)) -		return smt_on() > 0 ? 1.0 : 0.0; +	if (!strcasecmp("#smt_on", literal)) { +		result = smt_on() > 0 ? 1.0 : 0.0; +		goto out; +	} -	if (!strcmp("#num_cpus", literal)) -		return cpu__max_present_cpu(); +	if (!strcmp("#num_cpus", literal)) { +		result = cpu__max_present_cpu().cpu; +		goto out; +	}  	/*  	 * Assume that topology strings are consistent, such as CPUs "0-1" @@ -422,16 +427,24 @@ double expr__get_literal(const char *literal)  		topology = cpu_topology__new();  		if (!topology) {  			pr_err("Error creating CPU topology"); -			return NAN; +			goto out;  		}  	} -	if (!strcmp("#num_packages", literal)) -		return topology->package_cpus_lists; -	if (!strcmp("#num_dies", literal)) -		return topology->die_cpus_lists; -	if (!strcmp("#num_cores", literal)) -		return topology->core_cpus_lists; +	if (!strcmp("#num_packages", literal)) { +		result = topology->package_cpus_lists; +		goto out; +	} +	if (!strcmp("#num_dies", literal)) { +		result = topology->die_cpus_lists; +		goto out; +	} +	if (!strcmp("#num_cores", literal)) { +		result = topology->core_cpus_lists; +		goto out; +	}  	pr_err("Unrecognized literal '%s'", literal); -	return NAN; +out: +	pr_debug2("literal: %s = %f\n", literal, result); +	return result;  }  |