Lines Matching full:mem

16 #include "util/mem-events.h"
51 struct perf_mem *mem = (struct perf_mem *)opt->value; in parse_record_events() local
56 pr_err("failed: there is no PMU that supports perf mem\n"); in parse_record_events()
67 mem->operation = 0; in parse_record_events()
71 static int __cmd_record(int argc, const char **argv, struct perf_mem *mem, in __cmd_record() argument
82 "perf mem record [<options>] [<command>]", in __cmd_record()
83 "perf mem record [<options>] -- <command> [<options>]", in __cmd_record()
104 if (mem->cpu_list) in __cmd_record()
120 (mem->operation & MEM_OPERATION_LOAD) && in __cmd_record()
121 (mem->operation & MEM_OPERATION_STORE)) { in __cmd_record()
125 if (mem->operation & MEM_OPERATION_LOAD) in __cmd_record()
128 if (mem->operation & MEM_OPERATION_STORE) in __cmd_record()
137 if (mem->phys_addr) in __cmd_record()
140 if (mem->data_page_size) in __cmd_record()
149 if (mem->all_user) in __cmd_record()
152 if (mem->all_kernel) in __cmd_record()
155 if (mem->cpu_list) { in __cmd_record()
157 rec_argv[i++] = mem->cpu_list; in __cmd_record()
185 struct perf_mem *mem = container_of(tool, struct perf_mem, tool); in dump_raw_samples() local
199 if (al.filtered || (mem->hide_unresolved && al.sym == NULL)) in dump_raw_samples()
225 if (mem->phys_addr) { in dump_raw_samples()
231 if (mem->data_page_size) { in dump_raw_samples()
263 static int report_raw_events(struct perf_mem *mem) in report_raw_events() argument
267 .mem = true, /* Only enable memory event */ 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()
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()
328 static char *get_sort_order(struct perf_mem *mem) in get_sort_order() argument
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()
357 if (mem->data_type && !strstr(sort, "type")) in get_sort_order()
363 static int __cmd_report(int argc, const char **argv, struct perf_mem *mem, in __cmd_report() argument
370 "perf mem report [<options>]", in __cmd_report()
377 if (mem->dump_raw) in __cmd_report()
378 return report_raw_events(mem); in __cmd_report()
386 rep_argv[i++] = "--mem-mode"; in __cmd_report()
389 new_sort_order = get_sort_order(mem); in __cmd_report()
474 struct perf_mem mem = { in cmd_mem() local
483 OPT_CALLBACK('t', "type", &mem.operation, in cmd_mem()
486 OPT_STRING('C', "cpu", &mem.cpu_list, "cpu", in cmd_mem()
488 OPT_BOOLEAN('f', "force", &mem.force, "don't complain, do it"), in cmd_mem()
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()
496 OPT_CALLBACK('e', "event", &mem, "event", 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()
515 OPT_STRING('s', "sort", &mem.sort_key, "key[,key2...]", in cmd_mem()
517 OPT_BOOLEAN('T', "type-profile", &mem.data_type, in cmd_mem()
531 if (!argc || !(strncmp(argv[0], "rec", 3) || mem.operation)) in cmd_mem()
534 if (!mem.input_name || !strlen(mem.input_name)) { in cmd_mem()
536 mem.input_name = "-"; in cmd_mem()
538 mem.input_name = "perf.data"; in cmd_mem()
542 ret = __cmd_record(argc, argv, &mem, record_options); in cmd_mem()
544 ret = __cmd_report(argc, argv, &mem, report_options); in cmd_mem()