• Home
  • Raw
  • Download

Lines Matching +full:path +full:- +full:map

1 // SPDX-License-Identifier: GPL-2.0
23 struct perf_cpu_map *map; in cpu_map__from_entries() local
25 map = perf_cpu_map__empty_new(cpus->nr); in cpu_map__from_entries()
26 if (map) { in cpu_map__from_entries()
29 for (i = 0; i < cpus->nr; i++) { in cpu_map__from_entries()
31 * Special treatment for -1, which is not real cpu number, in cpu_map__from_entries()
32 * and we need to use (int) -1 to initialize map[i], in cpu_map__from_entries()
35 if (cpus->cpu[i] == (u16) -1) in cpu_map__from_entries()
36 map->map[i] = -1; in cpu_map__from_entries()
38 map->map[i] = (int) cpus->cpu[i]; in cpu_map__from_entries()
42 return map; in cpu_map__from_entries()
47 struct perf_cpu_map *map; in cpu_map__from_mask() local
48 int nr, nbits = mask->nr * mask->long_size * BITS_PER_BYTE; in cpu_map__from_mask()
50 nr = bitmap_weight(mask->mask, nbits); in cpu_map__from_mask()
52 map = perf_cpu_map__empty_new(nr); in cpu_map__from_mask()
53 if (map) { in cpu_map__from_mask()
56 for_each_set_bit(cpu, mask->mask, nbits) in cpu_map__from_mask()
57 map->map[i++] = cpu; in cpu_map__from_mask()
59 return map; in cpu_map__from_mask()
65 if (data->type == PERF_CPU_MAP__CPUS) in cpu_map__new_data()
66 return cpu_map__from_entries((struct cpu_map_entries *)data->data); in cpu_map__new_data()
68 return cpu_map__from_mask((struct perf_record_record_cpu_map *)data->data); in cpu_map__new_data()
71 size_t cpu_map__fprintf(struct perf_cpu_map *map, FILE *fp) in cpu_map__fprintf() argument
76 cpu_map__snprint(map, buf, sizeof(buf)); in cpu_map__fprintf()
88 cpus->nr = nr; in perf_cpu_map__empty_new()
90 cpus->map[i] = -1; in perf_cpu_map__empty_new()
92 refcount_set(&cpus->refcnt, 1); in perf_cpu_map__empty_new()
100 char path[PATH_MAX]; in cpu__get_topology_int() local
102 snprintf(path, PATH_MAX, in cpu__get_topology_int()
105 return sysfs__read_int(path, value); in cpu__get_topology_int()
114 int cpu_map__get_socket(struct perf_cpu_map *map, int idx, void *data __maybe_unused) in cpu_map__get_socket() argument
118 if (idx > map->nr) in cpu_map__get_socket()
119 return -1; in cpu_map__get_socket()
121 cpu = map->map[idx]; in cpu_map__get_socket()
128 return *(int *)a - *(int *)b; in cmp_ids()
132 int (*f)(struct perf_cpu_map *map, int cpu, void *data), in cpu_map__build_map() argument
136 int nr = cpus->nr; in cpu_map__build_map()
142 return -1; in cpu_map__build_map()
146 for (s2 = 0; s2 < c->nr; s2++) { in cpu_map__build_map()
147 if (s1 == c->map[s2]) in cpu_map__build_map()
150 if (s2 == c->nr) { in cpu_map__build_map()
151 c->map[c->nr] = s1; in cpu_map__build_map()
152 c->nr++; in cpu_map__build_map()
156 qsort(c->map, c->nr, sizeof(int), cmp_ids); in cpu_map__build_map()
158 refcount_set(&c->refcnt, 1); in cpu_map__build_map()
170 int cpu_map__get_die(struct perf_cpu_map *map, int idx, void *data) in cpu_map__get_die() argument
174 if (idx > map->nr) in cpu_map__get_die()
175 return -1; in cpu_map__get_die()
177 cpu = map->map[idx]; in cpu_map__get_die()
181 if (die_id == -1) in cpu_map__get_die()
184 s = cpu_map__get_socket(map, idx, data); in cpu_map__get_die()
185 if (s == -1) in cpu_map__get_die()
186 return -1; in cpu_map__get_die()
195 return -1; in cpu_map__get_die()
198 return -1; in cpu_map__get_die()
214 int cpu_map__get_core(struct perf_cpu_map *map, int idx, void *data) in cpu_map__get_core() argument
218 if (idx > map->nr) in cpu_map__get_core()
219 return -1; in cpu_map__get_core()
221 cpu = map->map[idx]; in cpu_map__get_core()
226 s_die = cpu_map__get_die(map, idx, data); in cpu_map__get_core()
227 if (s_die == -1) in cpu_map__get_core()
228 return -1; in cpu_map__get_core()
238 return -1; in cpu_map__get_core()
243 int cpu_map__get_node(struct perf_cpu_map *map, int idx, void *data __maybe_unused) in cpu_map__get_node() argument
245 if (idx < 0 || idx >= map->nr) in cpu_map__get_node()
246 return -1; in cpu_map__get_node()
248 return cpu_map__get_node_id(map->map[idx]); in cpu_map__get_node()
272 static int get_max_num(char *path, int *max) in get_max_num() argument
278 if (filename__read_str(path, &buf, &num)) in get_max_num()
279 return -1; in get_max_num()
284 while (--num) { in get_max_num()
285 if ((buf[num] == ',') || (buf[num] == '-')) { in get_max_num()
291 err = -1; in get_max_num()
295 /* convert from 0-based to 1-based */ in get_max_num()
307 char path[PATH_MAX]; in set_max_cpu_num() local
308 int ret = -1; in set_max_cpu_num()
319 ret = snprintf(path, PATH_MAX, "%s/devices/system/cpu/possible", mnt); in set_max_cpu_num()
321 pr_err("sysfs path crossed PATH_MAX(%d) size\n", PATH_MAX); in set_max_cpu_num()
325 ret = get_max_num(path, &max_cpu_num); in set_max_cpu_num()
330 ret = snprintf(path, PATH_MAX, "%s/devices/system/cpu/present", mnt); in set_max_cpu_num()
332 pr_err("sysfs path crossed PATH_MAX(%d) size\n", PATH_MAX); in set_max_cpu_num()
336 ret = get_max_num(path, &max_present_cpu_num); in set_max_cpu_num()
347 char path[PATH_MAX]; in set_max_node_num() local
348 int ret = -1; in set_max_node_num()
358 ret = snprintf(path, PATH_MAX, "%s/devices/system/node/possible", mnt); in set_max_node_num()
360 pr_err("sysfs path crossed PATH_MAX(%d) size\n", PATH_MAX); in set_max_node_num()
364 ret = get_max_num(path, &max_node_num); in set_max_node_num()
400 return -1; in cpu__get_node()
416 return -1; in init_cpunode_map()
420 cpunode_map[i] = -1; in init_cpunode_map()
431 char path[PATH_MAX]; in cpu__setup_cpunode_map() local
437 return -1; in cpu__setup_cpunode_map()
443 n = snprintf(path, PATH_MAX, "%s/devices/system/node", mnt); in cpu__setup_cpunode_map()
445 pr_err("sysfs path crossed PATH_MAX(%d) size\n", PATH_MAX); in cpu__setup_cpunode_map()
446 return -1; in cpu__setup_cpunode_map()
449 dir1 = opendir(path); in cpu__setup_cpunode_map()
453 /* walk tree and setup map */ in cpu__setup_cpunode_map()
455 if (dent1->d_type != DT_DIR || sscanf(dent1->d_name, "node%u", &mem) < 1) in cpu__setup_cpunode_map()
458 n = snprintf(buf, PATH_MAX, "%s/%s", path, dent1->d_name); in cpu__setup_cpunode_map()
460 pr_err("sysfs path crossed PATH_MAX(%d) size\n", PATH_MAX); in cpu__setup_cpunode_map()
468 if (dent2->d_type != DT_LNK || sscanf(dent2->d_name, "cpu%u", &cpu) < 1) in cpu__setup_cpunode_map()
480 return perf_cpu_map__idx(cpus, cpu) != -1; in cpu_map__has()
485 return cpus->map[idx]; in cpu_map__cpu()
488 size_t cpu_map__snprint(struct perf_cpu_map *map, char *buf, size_t size) in cpu_map__snprint() argument
490 int i, cpu, start = -1; in cpu_map__snprint()
496 for (i = 0; i < map->nr + 1; i++) { in cpu_map__snprint()
497 bool last = i == map->nr; in cpu_map__snprint()
499 cpu = last ? INT_MAX : map->map[i]; in cpu_map__snprint()
501 if (start == -1) { in cpu_map__snprint()
504 ret += snprintf(buf + ret, size - ret, in cpu_map__snprint()
506 map->map[i]); in cpu_map__snprint()
508 } else if (((i - start) != (cpu - map->map[start])) || last) { in cpu_map__snprint()
509 int end = i - 1; in cpu_map__snprint()
512 ret += snprintf(buf + ret, size - ret, in cpu_map__snprint()
514 map->map[start]); in cpu_map__snprint()
516 ret += snprintf(buf + ret, size - ret, in cpu_map__snprint()
517 "%s%d-%d", COMMA, in cpu_map__snprint()
518 map->map[start], map->map[end]); in cpu_map__snprint()
536 return val - 10 + 'a'; in hex_char()
540 size_t cpu_map__snprint_mask(struct perf_cpu_map *map, char *buf, size_t size) in cpu_map__snprint_mask() argument
545 int last_cpu = cpu_map__cpu(map, map->nr - 1); in cpu_map__snprint_mask()
556 for (i = 0; i < map->nr; i++) { in cpu_map__snprint_mask()
557 cpu = cpu_map__cpu(map, i); in cpu_map__snprint_mask()
561 for (cpu = last_cpu / 4 * 4; cpu >= 0; cpu -= 4) { in cpu_map__snprint_mask()
576 buf[size - 1] = '\0'; in cpu_map__snprint_mask()
577 return ptr - buf; in cpu_map__snprint_mask()