Lines Matching +full:machine +full:- +full:mode
1 // SPDX-License-Identifier: GPL-2.0
9 #include <subcmd/parse-options.h>
11 #include "util/trace-event.h"
16 #include "util/mem-events.h"
51 struct perf_mem *mem = (struct perf_mem *)opt->value; in parse_record_events()
57 exit(-1); in parse_record_events()
65 exit(-1); in parse_record_events()
67 mem->operation = 0; in parse_record_events()
83 "perf mem record [<options>] -- <command> [<options>]", in __cmd_record()
90 return -1; in __cmd_record()
95 return -1; in __cmd_record()
104 if (mem->cpu_list) in __cmd_record()
109 return -1; in __cmd_record()
119 if (e->tag && in __cmd_record()
120 (mem->operation & MEM_OPERATION_LOAD) && in __cmd_record()
121 (mem->operation & MEM_OPERATION_STORE)) { in __cmd_record()
123 rec_argv[i++] = "-W"; in __cmd_record()
125 if (mem->operation & MEM_OPERATION_LOAD) in __cmd_record()
128 if (mem->operation & MEM_OPERATION_STORE) in __cmd_record()
133 rec_argv[i++] = "-W"; in __cmd_record()
135 rec_argv[i++] = "-d"; in __cmd_record()
137 if (mem->phys_addr) in __cmd_record()
138 rec_argv[i++] = "--phys-data"; in __cmd_record()
140 if (mem->data_page_size) in __cmd_record()
141 rec_argv[i++] = "--data-page-size"; in __cmd_record()
149 if (mem->all_user) in __cmd_record()
150 rec_argv[i++] = "--all-user"; in __cmd_record()
152 if (mem->all_kernel) in __cmd_record()
153 rec_argv[i++] = "--all-kernel"; in __cmd_record()
155 if (mem->cpu_list) { in __cmd_record()
156 rec_argv[i++] = "-C"; in __cmd_record()
157 rec_argv[i++] = mem->cpu_list; in __cmd_record()
183 struct machine *machine) in dump_raw_samples() argument
192 if (machine__resolve(machine, &al, sample) < 0) { in dump_raw_samples()
194 event->header.type); in dump_raw_samples()
196 return -1; in dump_raw_samples()
199 if (al.filtered || (mem->hide_unresolved && al.sym == NULL)) in dump_raw_samples()
216 sample->pid, in dump_raw_samples()
218 sample->tid, in dump_raw_samples()
220 sample->ip, in dump_raw_samples()
222 sample->addr, in dump_raw_samples()
225 if (mem->phys_addr) { in dump_raw_samples()
227 sample->phys_addr, in dump_raw_samples()
231 if (mem->data_page_size) { in dump_raw_samples()
233 get_page_size_name(sample->data_page_size, str), in dump_raw_samples()
243 sample->weight, in dump_raw_samples()
245 sample->data_src, in dump_raw_samples()
248 al.sym ? al.sym->name : "???"); in dump_raw_samples()
258 struct machine *machine) in process_sample_event() argument
260 return dump_raw_samples(tool, event, sample, machine); in process_sample_event()
273 .mode = PERF_DATA_MODE_READ, in report_raw_events()
274 .force = mem->force, in report_raw_events()
279 perf_tool__init(&mem->tool, /*ordered_events=*/true); in report_raw_events()
280 mem->tool.sample = process_sample_event; in report_raw_events()
281 mem->tool.mmap = perf_event__process_mmap; in report_raw_events()
282 mem->tool.mmap2 = perf_event__process_mmap2; in report_raw_events()
283 mem->tool.comm = perf_event__process_comm; in report_raw_events()
284 mem->tool.lost = perf_event__process_lost; in report_raw_events()
285 mem->tool.fork = perf_event__process_fork; in report_raw_events()
286 mem->tool.attr = perf_event__process_attr; in report_raw_events()
287 mem->tool.build_id = perf_event__process_build_id; in report_raw_events()
288 mem->tool.namespaces = perf_event__process_namespaces; in report_raw_events()
289 mem->tool.auxtrace_info = perf_event__process_auxtrace_info; in report_raw_events()
290 mem->tool.auxtrace = perf_event__process_auxtrace; in report_raw_events()
291 mem->tool.auxtrace_error = perf_event__process_auxtrace_error; in report_raw_events()
293 session = perf_session__new(&data, &mem->tool); in report_raw_events()
298 session->itrace_synth_opts = &itrace_synth_opts; in report_raw_events()
300 if (mem->cpu_list) { in report_raw_events()
301 ret = perf_session__cpu_bitmap(session, mem->cpu_list, in report_raw_events()
302 mem->cpu_bitmap); in report_raw_events()
313 if (mem->phys_addr) in report_raw_events()
316 if (mem->data_page_size) in report_raw_events()
330 bool has_extra_options = (mem->phys_addr | mem->data_page_size) ? true : false; in get_sort_order()
333 if (mem->sort_key) in get_sort_order()
334 scnprintf(sort, sizeof(sort), "--sort=%s", mem->sort_key); in get_sort_order()
335 else if (mem->data_type) in get_sort_order()
336 strcpy(sort, "--sort=mem,snoop,tlb,type"); in get_sort_order()
341 else if (!(mem->operation & MEM_OPERATION_LOAD)) { in get_sort_order()
342 strcpy(sort, "--sort=mem,sym,dso,symbol_daddr," in get_sort_order()
345 strcpy(sort, "--sort=local_weight,mem,sym,dso,symbol_daddr," in get_sort_order()
350 if (mem->phys_addr) in get_sort_order()
353 if (mem->data_page_size) in get_sort_order()
356 /* make sure it has 'type' sort key even -s option is used */ in get_sort_order()
357 if (mem->data_type && !strstr(sort, "type")) in get_sort_order()
377 if (mem->dump_raw) in __cmd_report()
383 return -1; in __cmd_report()
386 rep_argv[i++] = "--mem-mode"; in __cmd_report()
387 rep_argv[i++] = "-n"; /* display number of samples */ in __cmd_report()
404 int mode; member
408 { .name = n, .mode = (m) }
421 int *mode = (int *)opt->value; in parse_mem_ops() local
424 int ret = -1; in parse_mem_ops()
429 /* str may be NULL in case no arg is passed to -t */ in parse_mem_ops()
431 /* because str is read-only */ in parse_mem_ops()
434 return -1; in parse_mem_ops()
436 /* reset mode */ in parse_mem_ops()
437 *mode = 0; in parse_mem_ops()
444 for (m = mem_modes; m->name; m++) { in parse_mem_ops()
445 if (!strcasecmp(s, m->name)) in parse_mem_ops()
448 if (!m->name) { in parse_mem_ops()
454 *mode |= m->mode; in parse_mem_ops()
464 if (*mode == 0) in parse_mem_ops()
465 *mode = MEM_OPERATION_LOAD; in parse_mem_ops()
491 OPT_BOOLEAN('p', "phys-data", &mem.phys_addr, "Record/Report sample physical addresses"), in cmd_mem()
492 …OPT_BOOLEAN(0, "data-page-size", &mem.data_page_size, "Record/Report sample data address page size… in cmd_mem()
497 "event selector. use 'perf mem record -e list' to list available events", in cmd_mem()
499 OPT_UINTEGER(0, "ldlat", &perf_mem_events__loads_ldlat, "mem-loads latency"), in cmd_mem()
500 OPT_BOOLEAN('U', "all-user", &mem.all_user, "collect only user level data"), in cmd_mem()
501 OPT_BOOLEAN('K', "all-kernel", &mem.all_kernel, "collect only kernel level data"), in cmd_mem()
505 OPT_BOOLEAN('D', "dump-raw-samples", &mem.dump_raw, in cmd_mem()
507 OPT_BOOLEAN('U', "hide-unresolved", &mem.hide_unresolved, in cmd_mem()
511 OPT_STRING_NOEMPTY('x', "field-separator", &symbol_conf.field_sep, in cmd_mem()
517 OPT_BOOLEAN('T', "type-profile", &mem.data_type, in cmd_mem()
518 "Show data-type profile result"), in cmd_mem()
536 mem.input_name = "-"; in cmd_mem()