Em Wed, Apr 29, 2020 at 07:19:47PM +0300, Konstantin Khlebnikov escreveu:
> Check access("devices/system/cpu/cpu%d/topology/core_cpus", F_OK) fails,
> unless current directory is "/sys". Simply try read this file first.
>
> Signed-off-by: Konstantin Khlebnikov <[email protected]>
> Fixes: 0ccdb8407a46 ("perf tools: Apply new CPU topology sysfs attributes")
> ---
> tools/perf/util/smt.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
Thanks, applied,
- Arnaldo
> diff --git a/tools/perf/util/smt.c b/tools/perf/util/smt.c
> index 3b791ef2cd50..8481842e9edb 100644
> --- a/tools/perf/util/smt.c
> +++ b/tools/perf/util/smt.c
> @@ -24,13 +24,13 @@ int smt_on(void)
>
> snprintf(fn, sizeof fn,
> "devices/system/cpu/cpu%d/topology/core_cpus", cpu);
> - if (access(fn, F_OK) == -1) {
> + if (sysfs__read_str(fn, &str, &strlen) < 0) {
> snprintf(fn, sizeof fn,
>
> "devices/system/cpu/cpu%d/topology/thread_siblings",
> cpu);
> + if (sysfs__read_str(fn, &str, &strlen) < 0)
> + continue;
> }
> - if (sysfs__read_str(fn, &str, &strlen) < 0)
> - continue;
> /* Entry is hex, but does not have 0x, so need custom parser */
> siblings = strtoull(str, NULL, 16);
> free(str);
>
--
- Arnaldo