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
81 "perf mem record [<options>] [<command>]", in __cmd_record()
82 "perf mem record [<options>] -- <command> [<options>]", in __cmd_record()
103 if (mem->cpu_list) in __cmd_record()
119 (mem->operation & MEM_OPERATION_LOAD) && in __cmd_record()
120 (mem->operation & MEM_OPERATION_STORE)) { in __cmd_record()
124 if (mem->operation & MEM_OPERATION_LOAD) in __cmd_record()
127 if (mem->operation & MEM_OPERATION_STORE) in __cmd_record()
136 if (mem->phys_addr) in __cmd_record()
139 if (mem->data_page_size) in __cmd_record()
148 if (mem->all_user) in __cmd_record()
151 if (mem->all_kernel) in __cmd_record()
154 if (mem->cpu_list) { in __cmd_record()
156 rec_argv[i++] = mem->cpu_list; in __cmd_record()
183 struct perf_mem *mem = container_of(tool, struct perf_mem, tool); in dump_raw_samples() local
197 if (al.filtered || (mem->hide_unresolved && al.sym == NULL)) in dump_raw_samples()
223 if (mem->phys_addr) { in dump_raw_samples()
229 if (mem->data_page_size) { in dump_raw_samples()
261 static int report_raw_events(struct perf_mem *mem) in report_raw_events() argument
265 .mem = true, /* Only enable memory event */ in report_raw_events()
272 .force = mem->force, in report_raw_events()
277 perf_tool__init(&mem->tool, /*ordered_events=*/true); in report_raw_events()
278 mem->tool.sample = process_sample_event; in report_raw_events()
279 mem->tool.mmap = perf_event__process_mmap; in report_raw_events()
280 mem->tool.mmap2 = perf_event__process_mmap2; in report_raw_events()
281 mem->tool.comm = perf_event__process_comm; in report_raw_events()
282 mem->tool.lost = perf_event__process_lost; in report_raw_events()
283 mem->tool.fork = perf_event__process_fork; in report_raw_events()
284 mem->tool.attr = perf_event__process_attr; in report_raw_events()
285 mem->tool.build_id = perf_event__process_build_id; in report_raw_events()
286 mem->tool.namespaces = perf_event__process_namespaces; in report_raw_events()
287 mem->tool.auxtrace_info = perf_event__process_auxtrace_info; in report_raw_events()
288 mem->tool.auxtrace = perf_event__process_auxtrace; in report_raw_events()
289 mem->tool.auxtrace_error = perf_event__process_auxtrace_error; in report_raw_events()
291 session = perf_session__new(&data, &mem->tool); in report_raw_events()
298 if (mem->cpu_list) { in report_raw_events()
299 ret = perf_session__cpu_bitmap(session, mem->cpu_list, in report_raw_events()
300 mem->cpu_bitmap); in report_raw_events()
311 if (mem->phys_addr) in report_raw_events()
314 if (mem->data_page_size) in report_raw_events()
326 static char *get_sort_order(struct perf_mem *mem) in get_sort_order() argument
328 bool has_extra_options = (mem->phys_addr | mem->data_page_size) ? true : false; in get_sort_order()
331 if (mem->sort_key) in get_sort_order()
332 scnprintf(sort, sizeof(sort), "--sort=%s", mem->sort_key); in get_sort_order()
333 else if (mem->data_type) in get_sort_order()
334 strcpy(sort, "--sort=mem,snoop,tlb,type"); in get_sort_order()
339 else if (!(mem->operation & MEM_OPERATION_LOAD)) { in get_sort_order()
340 strcpy(sort, "--sort=mem,sym,dso,symbol_daddr," in get_sort_order()
343 strcpy(sort, "--sort=local_weight,mem,sym,dso,symbol_daddr," in get_sort_order()
348 if (mem->phys_addr) in get_sort_order()
351 if (mem->data_page_size) in get_sort_order()
355 if (mem->data_type && !strstr(sort, "type")) in get_sort_order()
361 static int __cmd_report(int argc, const char **argv, struct perf_mem *mem, in __cmd_report() argument
368 "perf mem report [<options>]", in __cmd_report()
375 if (mem->dump_raw) in __cmd_report()
376 return report_raw_events(mem); in __cmd_report()
384 rep_argv[i++] = "--mem-mode"; in __cmd_report()
387 new_sort_order = get_sort_order(mem); in __cmd_report()
472 struct perf_mem mem = { in cmd_mem() local
481 OPT_CALLBACK('t', "type", &mem.operation, in cmd_mem()
484 OPT_STRING('C', "cpu", &mem.cpu_list, "cpu", in cmd_mem()
486 OPT_BOOLEAN('f', "force", &mem.force, "don't complain, do it"), in cmd_mem()
489 OPT_BOOLEAN('p', "phys-data", &mem.phys_addr, "Record/Report sample physical addresses"), in cmd_mem()
490 …OPT_BOOLEAN(0, "data-page-size", &mem.data_page_size, "Record/Report sample data address page size… in cmd_mem()
494 OPT_CALLBACK('e', "event", &mem, "event", in cmd_mem()
495 "event selector. use 'perf mem record -e list' to list available events", in cmd_mem()
497 OPT_UINTEGER(0, "ldlat", &perf_mem_events__loads_ldlat, "mem-loads latency"), in cmd_mem()
498 OPT_BOOLEAN('U', "all-user", &mem.all_user, "collect only user level data"), in cmd_mem()
499 OPT_BOOLEAN('K', "all-kernel", &mem.all_kernel, "collect only kernel level data"), in cmd_mem()
503 OPT_BOOLEAN('D', "dump-raw-samples", &mem.dump_raw, in cmd_mem()
505 OPT_BOOLEAN('U', "hide-unresolved", &mem.hide_unresolved, in cmd_mem()
513 OPT_STRING('s', "sort", &mem.sort_key, "key[,key2...]", in cmd_mem()
515 OPT_BOOLEAN('T', "type-profile", &mem.data_type, in cmd_mem()
528 if (!argc || !(strncmp(argv[0], "rec", 3) || mem.operation)) in cmd_mem()
531 if (!mem.input_name || !strlen(mem.input_name)) { in cmd_mem()
533 mem.input_name = "-"; in cmd_mem()
535 mem.input_name = "perf.data"; in cmd_mem()
539 return __cmd_record(argc, argv, &mem, record_options); in cmd_mem()
541 return __cmd_report(argc, argv, &mem, report_options); in cmd_mem()