cputopo.c (1215795cebb24578afd378b23d206014327558c4) cputopo.c (1eaf496ed386934f1c2439a120fe84a05194f91a)
1// SPDX-License-Identifier: GPL-2.0
2#include <sys/param.h>
3#include <sys/utsname.h>
4#include <inttypes.h>
5#include <stdlib.h>
6#include <string.h>
7#include <api/fs/fs.h>
8#include <linux/zalloc.h>
9#include <perf/cpumap.h>
10
11#include "cputopo.h"
12#include "cpumap.h"
13#include "debug.h"
14#include "env.h"
15#include "pmu.h"
1// SPDX-License-Identifier: GPL-2.0
2#include <sys/param.h>
3#include <sys/utsname.h>
4#include <inttypes.h>
5#include <stdlib.h>
6#include <string.h>
7#include <api/fs/fs.h>
8#include <linux/zalloc.h>
9#include <perf/cpumap.h>
10
11#include "cputopo.h"
12#include "cpumap.h"
13#include "debug.h"
14#include "env.h"
15#include "pmu.h"
16#include "pmus.h"
16
17#define PACKAGE_CPUS_FMT \
18 "%s/devices/system/cpu/cpu%d/topology/package_cpus_list"
19#define PACKAGE_CPUS_FMT_OLD \
20 "%s/devices/system/cpu/cpu%d/topology/core_siblings_list"
21#define DIE_CPUS_FMT \
22 "%s/devices/system/cpu/cpu%d/topology/die_cpus_list"
23#define CORE_CPUS_FMT \

--- 444 unchanged lines hidden (view full) ---

468}
469
470struct hybrid_topology *hybrid_topology__new(void)
471{
472 struct perf_pmu *pmu = NULL;
473 struct hybrid_topology *tp = NULL;
474 u32 nr = 0, i = 0;
475
17
18#define PACKAGE_CPUS_FMT \
19 "%s/devices/system/cpu/cpu%d/topology/package_cpus_list"
20#define PACKAGE_CPUS_FMT_OLD \
21 "%s/devices/system/cpu/cpu%d/topology/core_siblings_list"
22#define DIE_CPUS_FMT \
23 "%s/devices/system/cpu/cpu%d/topology/die_cpus_list"
24#define CORE_CPUS_FMT \

--- 444 unchanged lines hidden (view full) ---

469}
470
471struct hybrid_topology *hybrid_topology__new(void)
472{
473 struct perf_pmu *pmu = NULL;
474 struct hybrid_topology *tp = NULL;
475 u32 nr = 0, i = 0;
476
476 if (!perf_pmu__has_hybrid())
477 if (!perf_pmus__has_hybrid())
477 return NULL;
478
478 return NULL;
479
479 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
480 while ((pmu = perf_pmus__scan(pmu)) != NULL) {
480 if (pmu->is_core)
481 nr++;
482 }
483 if (nr == 0)
484 return NULL;
485
486 tp = zalloc(sizeof(*tp) + sizeof(tp->nodes[0]) * nr);
487 if (!tp)
488 return NULL;
489
490 tp->nr = nr;
481 if (pmu->is_core)
482 nr++;
483 }
484 if (nr == 0)
485 return NULL;
486
487 tp = zalloc(sizeof(*tp) + sizeof(tp->nodes[0]) * nr);
488 if (!tp)
489 return NULL;
490
491 tp->nr = nr;
491 while ((pmu = perf_pmu__scan(pmu)) != NULL) {
492 while ((pmu = perf_pmus__scan(pmu)) != NULL) {
492 if (!pmu->is_core)
493 continue;
494
495 if (load_hybrid_node(&tp->nodes[i], pmu)) {
496 hybrid_topology__delete(tp);
497 return NULL;
498 }
499 i++;

--- 16 unchanged lines hidden ---
493 if (!pmu->is_core)
494 continue;
495
496 if (load_hybrid_node(&tp->nodes[i], pmu)) {
497 hybrid_topology__delete(tp);
498 return NULL;
499 }
500 i++;

--- 16 unchanged lines hidden ---