builtin-probe.c (2f2fde927243bde5fd106da692efef34be12f81c) | builtin-probe.c (4eced2347c447c9409877368fc52478c356b4767) |
---|---|
1/* 2 * builtin-probe.c 3 * 4 * Builtin probe command: Set up probe events by C expression 5 * 6 * Written by Masami Hiramatsu <mhiramat@redhat.com> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 44 unchanged lines hidden (view full) --- 53 bool show_vars; 54 bool show_ext_vars; 55 bool show_funcs; 56 bool mod_events; 57 int nevents; 58 struct perf_probe_event events[MAX_PROBES]; 59 struct strlist *dellist; 60 struct line_range line_range; | 1/* 2 * builtin-probe.c 3 * 4 * Builtin probe command: Set up probe events by C expression 5 * 6 * Written by Masami Hiramatsu <mhiramat@redhat.com> 7 * 8 * This program is free software; you can redistribute it and/or modify --- 44 unchanged lines hidden (view full) --- 53 bool show_vars; 54 bool show_ext_vars; 55 bool show_funcs; 56 bool mod_events; 57 int nevents; 58 struct perf_probe_event events[MAX_PROBES]; 59 struct strlist *dellist; 60 struct line_range line_range; |
61 const char *target_module; | 61 const char *target; |
62 int max_probe_points; 63 struct strfilter *filter; 64} params; 65 66/* Parse an event definition. Note that any error must die. */ 67static int parse_probe_event(const char *str) 68{ 69 struct perf_probe_event *pev = ¶ms.events[params.nevents]; --- 171 unchanged lines hidden (view full) --- 241 "FUNC[@SRC][+OFF|%return|:RL|;PT]|SRC:AL|SRC;PT", 242 "Show accessible variables on PROBEDEF", opt_show_vars), 243 OPT_BOOLEAN('\0', "externs", ¶ms.show_ext_vars, 244 "Show external variables too (with --vars only)"), 245 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name, 246 "file", "vmlinux pathname"), 247 OPT_STRING('s', "source", &symbol_conf.source_prefix, 248 "directory", "path to kernel source"), | 62 int max_probe_points; 63 struct strfilter *filter; 64} params; 65 66/* Parse an event definition. Note that any error must die. */ 67static int parse_probe_event(const char *str) 68{ 69 struct perf_probe_event *pev = ¶ms.events[params.nevents]; --- 171 unchanged lines hidden (view full) --- 241 "FUNC[@SRC][+OFF|%return|:RL|;PT]|SRC:AL|SRC;PT", 242 "Show accessible variables on PROBEDEF", opt_show_vars), 243 OPT_BOOLEAN('\0', "externs", ¶ms.show_ext_vars, 244 "Show external variables too (with --vars only)"), 245 OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name, 246 "file", "vmlinux pathname"), 247 OPT_STRING('s', "source", &symbol_conf.source_prefix, 248 "directory", "path to kernel source"), |
249 OPT_STRING('m', "module", ¶ms.target_module, | 249 OPT_STRING('m', "module", ¶ms.target, |
250 "modname|path", 251 "target module name (for online) or path (for offline)"), 252#endif 253 OPT__DRY_RUN(&probe_event_dry_run), 254 OPT_INTEGER('\0', "max-probes", ¶ms.max_probe_points, 255 "Set how many probe points can be found for a probe."), 256 OPT_BOOLEAN('F', "funcs", ¶ms.show_funcs, 257 "Show potential probe-able functions."), --- 70 unchanged lines hidden (view full) --- 328 } 329 if (params.show_vars) { 330 pr_err(" Error: Don't use --funcs with --vars.\n"); 331 usage_with_options(probe_usage, options); 332 } 333 if (!params.filter) 334 params.filter = strfilter__new(DEFAULT_FUNC_FILTER, 335 NULL); | 250 "modname|path", 251 "target module name (for online) or path (for offline)"), 252#endif 253 OPT__DRY_RUN(&probe_event_dry_run), 254 OPT_INTEGER('\0', "max-probes", ¶ms.max_probe_points, 255 "Set how many probe points can be found for a probe."), 256 OPT_BOOLEAN('F', "funcs", ¶ms.show_funcs, 257 "Show potential probe-able functions."), --- 70 unchanged lines hidden (view full) --- 328 } 329 if (params.show_vars) { 330 pr_err(" Error: Don't use --funcs with --vars.\n"); 331 usage_with_options(probe_usage, options); 332 } 333 if (!params.filter) 334 params.filter = strfilter__new(DEFAULT_FUNC_FILTER, 335 NULL); |
336 ret = show_available_funcs(params.target_module, | 336 ret = show_available_funcs(params.target, |
337 params.filter); 338 strfilter__delete(params.filter); 339 if (ret < 0) 340 pr_err(" Error: Failed to show functions." 341 " (%d)\n", ret); 342 return ret; 343 } 344 --- 4 unchanged lines hidden (view full) --- 349 " --add/--del.\n"); 350 usage_with_options(probe_usage, options); 351 } 352 if (params.show_vars) { 353 pr_err(" Error: Don't use --line with --vars.\n"); 354 usage_with_options(probe_usage, options); 355 } 356 | 337 params.filter); 338 strfilter__delete(params.filter); 339 if (ret < 0) 340 pr_err(" Error: Failed to show functions." 341 " (%d)\n", ret); 342 return ret; 343 } 344 --- 4 unchanged lines hidden (view full) --- 349 " --add/--del.\n"); 350 usage_with_options(probe_usage, options); 351 } 352 if (params.show_vars) { 353 pr_err(" Error: Don't use --line with --vars.\n"); 354 usage_with_options(probe_usage, options); 355 } 356 |
357 ret = show_line_range(¶ms.line_range, params.target_module); | 357 ret = show_line_range(¶ms.line_range, params.target); |
358 if (ret < 0) 359 pr_err(" Error: Failed to show lines. (%d)\n", ret); 360 return ret; 361 } 362 if (params.show_vars) { 363 if (params.mod_events) { 364 pr_err(" Error: Don't use --vars with" 365 " --add/--del.\n"); 366 usage_with_options(probe_usage, options); 367 } 368 if (!params.filter) 369 params.filter = strfilter__new(DEFAULT_VAR_FILTER, 370 NULL); 371 372 ret = show_available_vars(params.events, params.nevents, 373 params.max_probe_points, | 358 if (ret < 0) 359 pr_err(" Error: Failed to show lines. (%d)\n", ret); 360 return ret; 361 } 362 if (params.show_vars) { 363 if (params.mod_events) { 364 pr_err(" Error: Don't use --vars with" 365 " --add/--del.\n"); 366 usage_with_options(probe_usage, options); 367 } 368 if (!params.filter) 369 params.filter = strfilter__new(DEFAULT_VAR_FILTER, 370 NULL); 371 372 ret = show_available_vars(params.events, params.nevents, 373 params.max_probe_points, |
374 params.target_module, | 374 params.target, |
375 params.filter, 376 params.show_ext_vars); 377 strfilter__delete(params.filter); 378 if (ret < 0) 379 pr_err(" Error: Failed to show vars. (%d)\n", ret); 380 return ret; 381 } 382#endif --- 5 unchanged lines hidden (view full) --- 388 pr_err(" Error: Failed to delete events. (%d)\n", ret); 389 return ret; 390 } 391 } 392 393 if (params.nevents) { 394 ret = add_perf_probe_events(params.events, params.nevents, 395 params.max_probe_points, | 375 params.filter, 376 params.show_ext_vars); 377 strfilter__delete(params.filter); 378 if (ret < 0) 379 pr_err(" Error: Failed to show vars. (%d)\n", ret); 380 return ret; 381 } 382#endif --- 5 unchanged lines hidden (view full) --- 388 pr_err(" Error: Failed to delete events. (%d)\n", ret); 389 return ret; 390 } 391 } 392 393 if (params.nevents) { 394 ret = add_perf_probe_events(params.events, params.nevents, 395 params.max_probe_points, |
396 params.target_module, | 396 params.target, |
397 params.force_add); 398 if (ret < 0) { 399 pr_err(" Error: Failed to add events. (%d)\n", ret); 400 return ret; 401 } 402 } 403 return 0; 404} | 397 params.force_add); 398 if (ret < 0) { 399 pr_err(" Error: Failed to add events. (%d)\n", ret); 400 return ret; 401 } 402 } 403 return 0; 404} |