* [PATCH 0/3] Fixes for debug variables @ 2022-12-20 3:56 Yang Jihong 2022-12-20 3:57 ` [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option Yang Jihong ` (2 more replies) 0 siblings, 3 replies; 8+ messages in thread From: Yang Jihong @ 2022-12-20 3:56 UTC (permalink / raw) To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, adrian.hunter, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel Cc: yangjihong1 patch1 is a fix for debug_peo_args and redirect_to_stderr. patch2 is a fix for the verbose variable. patch3 is a correction for checking the quiet option. Yang Jihong (3): perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option perf tools: Fix usage of the verbose variable perf probe: Check -v and -q options in the right place tools/perf/builtin-lock.c | 6 +++--- tools/perf/builtin-probe.c | 17 +++++++++-------- tools/perf/builtin-record.c | 4 ++-- tools/perf/builtin-script.c | 2 +- tools/perf/builtin-stat.c | 4 ++-- tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- tools/perf/tests/builtin-test.c | 2 +- tools/perf/tests/dlfilter-test.c | 2 +- tools/perf/util/bpf_lock_contention.c | 2 +- tools/perf/util/debug.c | 4 ++++ tools/perf/util/dlfilter.c | 2 +- 11 files changed, 26 insertions(+), 21 deletions(-) -- 2.30.GIT ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option 2022-12-20 3:56 [PATCH 0/3] Fixes for debug variables Yang Jihong @ 2022-12-20 3:57 ` Yang Jihong 2022-12-20 7:35 ` Adrian Hunter 2022-12-20 3:57 ` [PATCH 2/3] perf tools: Fix usage of the verbose variable Yang Jihong 2022-12-20 3:57 ` [PATCH 3/3] perf probe: Check -v and -q options in the right place Yang Jihong 2 siblings, 1 reply; 8+ messages in thread From: Yang Jihong @ 2022-12-20 3:57 UTC (permalink / raw) To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, adrian.hunter, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel Cc: yangjihong1 When perf uses quiet mode, perf_quiet_option sets debug_peo_args to -1, and display_attr incorrectly determines the value of debug_peo_args. As a result, unexpected information is displayed. Before: # perf record --quiet -- ls > /dev/null ------------------------------------------------------------ perf_event_attr: size 128 { sample_period, sample_freq } 4000 sample_type IP|TID|TIME|PERIOD read_format ID|LOST disabled 1 inherit 1 mmap 1 comm 1 freq 1 enable_on_exec 1 task 1 precise_ip 3 sample_id_all 1 exclude_guest 1 mmap2 1 comm_exec 1 ksymbol 1 bpf_event 1 ------------------------------------------------------------ ... After: # perf record --quiet -- ls > /dev/null # redirect_to_stderr is a similar problem. Fixes: f78eaef0e049 ("perf tools: Allow to force redirect pr_debug to stderr.") Fixes: ccd26741f5e6 ("perf tool: Provide an option to print perf_event_open args and return value") Suggested-by: Adrian Hunter <adrian.hunter@intel.com> Signed-off-by: Yang Jihong <yangjihong1@huawei.com> --- tools/perf/util/debug.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c index 65e6c22f38e4..190e818a0717 100644 --- a/tools/perf/util/debug.c +++ b/tools/perf/util/debug.c @@ -241,6 +241,10 @@ int perf_quiet_option(void) opt++; } + /* For debug variables that are used as bool types, set to 0. */ + redirect_to_stderr = 0; + debug_peo_args = 0; + return 0; } -- 2.30.GIT ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option 2022-12-20 3:57 ` [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option Yang Jihong @ 2022-12-20 7:35 ` Adrian Hunter 2022-12-20 18:17 ` Arnaldo Carvalho de Melo 0 siblings, 1 reply; 8+ messages in thread From: Adrian Hunter @ 2022-12-20 7:35 UTC (permalink / raw) To: Yang Jihong, peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel On 20/12/22 05:57, Yang Jihong wrote: > When perf uses quiet mode, perf_quiet_option sets debug_peo_args to -1, > and display_attr incorrectly determines the value of debug_peo_args. > As a result, unexpected information is displayed. > > Before: > # perf record --quiet -- ls > /dev/null > ------------------------------------------------------------ > perf_event_attr: > size 128 > { sample_period, sample_freq } 4000 > sample_type IP|TID|TIME|PERIOD > read_format ID|LOST > disabled 1 > inherit 1 > mmap 1 > comm 1 > freq 1 > enable_on_exec 1 > task 1 > precise_ip 3 > sample_id_all 1 > exclude_guest 1 > mmap2 1 > comm_exec 1 > ksymbol 1 > bpf_event 1 > ------------------------------------------------------------ > ... > > After: > # perf record --quiet -- ls > /dev/null > # > > redirect_to_stderr is a similar problem. > > Fixes: f78eaef0e049 ("perf tools: Allow to force redirect pr_debug to stderr.") > Fixes: ccd26741f5e6 ("perf tool: Provide an option to print perf_event_open args and return value") > Suggested-by: Adrian Hunter <adrian.hunter@intel.com> > Signed-off-by: Yang Jihong <yangjihong1@huawei.com> Reviewed-by: Adrian Hunter <adrian.hunter@intel.com> > --- > tools/perf/util/debug.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/tools/perf/util/debug.c b/tools/perf/util/debug.c > index 65e6c22f38e4..190e818a0717 100644 > --- a/tools/perf/util/debug.c > +++ b/tools/perf/util/debug.c > @@ -241,6 +241,10 @@ int perf_quiet_option(void) > opt++; > } > > + /* For debug variables that are used as bool types, set to 0. */ > + redirect_to_stderr = 0; > + debug_peo_args = 0; > + > return 0; > } > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option 2022-12-20 7:35 ` Adrian Hunter @ 2022-12-20 18:17 ` Arnaldo Carvalho de Melo 0 siblings, 0 replies; 8+ messages in thread From: Arnaldo Carvalho de Melo @ 2022-12-20 18:17 UTC (permalink / raw) To: Adrian Hunter Cc: Yang Jihong, peterz, mingo, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel Em Tue, Dec 20, 2022 at 09:35:36AM +0200, Adrian Hunter escreveu: > On 20/12/22 05:57, Yang Jihong wrote: > > When perf uses quiet mode, perf_quiet_option sets debug_peo_args to -1, > > and display_attr incorrectly determines the value of debug_peo_args. > > As a result, unexpected information is displayed. > > > > Before: > > # perf record --quiet -- ls > /dev/null > > ------------------------------------------------------------ > > perf_event_attr: > > size 128 > > { sample_period, sample_freq } 4000 > > sample_type IP|TID|TIME|PERIOD > > read_format ID|LOST > > disabled 1 > > inherit 1 > > mmap 1 > > comm 1 > > freq 1 > > enable_on_exec 1 > > task 1 > > precise_ip 3 > > sample_id_all 1 > > exclude_guest 1 > > mmap2 1 > > comm_exec 1 > > ksymbol 1 > > bpf_event 1 > > ------------------------------------------------------------ > > ... > > > > After: > > # perf record --quiet -- ls > /dev/null > > # > > > > redirect_to_stderr is a similar problem. > > > > Fixes: f78eaef0e049 ("perf tools: Allow to force redirect pr_debug to stderr.") > > Fixes: ccd26741f5e6 ("perf tool: Provide an option to print perf_event_open args and return value") > > Suggested-by: Adrian Hunter <adrian.hunter@intel.com> > > Signed-off-by: Yang Jihong <yangjihong1@huawei.com> > > Reviewed-by: Adrian Hunter <adrian.hunter@intel.com> Thanks, applied all patches in this series. - Arnaldo ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 2/3] perf tools: Fix usage of the verbose variable 2022-12-20 3:56 [PATCH 0/3] Fixes for debug variables Yang Jihong 2022-12-20 3:57 ` [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option Yang Jihong @ 2022-12-20 3:57 ` Yang Jihong 2022-12-20 7:44 ` Adrian Hunter 2022-12-20 3:57 ` [PATCH 3/3] perf probe: Check -v and -q options in the right place Yang Jihong 2 siblings, 1 reply; 8+ messages in thread From: Yang Jihong @ 2022-12-20 3:57 UTC (permalink / raw) To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, adrian.hunter, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel Cc: yangjihong1 The data type of the verbose variable is integer and can be negative, replace improperly used cases in a unified manner: 1. if (verbose) => if (verbose > 0) 2. if (!verbose) => if (verbose <= 0) 3. if (XX && verbose) => if (XX && verbose > 0) 4. if (XX && !verbose) => if (XX && verbose <= 0) Signed-off-by: Yang Jihong <yangjihong1@huawei.com> --- tools/perf/builtin-lock.c | 6 +++--- tools/perf/builtin-record.c | 4 ++-- tools/perf/builtin-script.c | 2 +- tools/perf/builtin-stat.c | 4 ++-- tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- tools/perf/tests/builtin-test.c | 2 +- tools/perf/tests/dlfilter-test.c | 2 +- tools/perf/util/bpf_lock_contention.c | 2 +- tools/perf/util/dlfilter.c | 2 +- 9 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c index 25c0a5e5051f..6276dfbc94a1 100644 --- a/tools/perf/builtin-lock.c +++ b/tools/perf/builtin-lock.c @@ -1029,7 +1029,7 @@ static int report_lock_contention_begin_event(struct evsel *evsel, if (!ls) return -ENOMEM; - if (aggr_mode == LOCK_AGGR_CALLER && verbose) { + if (aggr_mode == LOCK_AGGR_CALLER && verbose > 0) { ls->callstack = get_callstack(sample, max_stack_depth); if (ls->callstack == NULL) return -ENOMEM; @@ -1214,7 +1214,7 @@ static void print_bad_events(int bad, int total) for (i = 0; i < BROKEN_MAX; i++) broken += bad_hist[i]; - if (quiet || (broken == 0 && !verbose)) + if (quiet || (broken == 0 && verbose <= 0)) return; pr_info("\n=== output for debug===\n\n"); @@ -1529,7 +1529,7 @@ static void print_contention_result(struct lock_contention *con) break; } - if (aggr_mode == LOCK_AGGR_CALLER && verbose) { + if (aggr_mode == LOCK_AGGR_CALLER && verbose > 0) { struct map *kmap; struct symbol *sym; char buf[128]; diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c index 8ecffa696ce3..29dcd454b8e2 100644 --- a/tools/perf/builtin-record.c +++ b/tools/perf/builtin-record.c @@ -3629,7 +3629,7 @@ static int record__init_thread_cpu_masks(struct record *rec, struct perf_cpu_map for (t = 0; t < rec->nr_threads; t++) { __set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].maps.bits); __set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].affinity.bits); - if (verbose) { + if (verbose > 0) { pr_debug("thread_masks[%d]: ", t); mmap_cpu_mask__scnprintf(&rec->thread_masks[t].maps, "maps"); pr_debug("thread_masks[%d]: ", t); @@ -3726,7 +3726,7 @@ static int record__init_thread_masks_spec(struct record *rec, struct perf_cpu_ma } rec->thread_masks = thread_masks; rec->thread_masks[t] = thread_mask; - if (verbose) { + if (verbose > 0) { pr_debug("thread_masks[%d]: ", t); mmap_cpu_mask__scnprintf(&rec->thread_masks[t].maps, "maps"); pr_debug("thread_masks[%d]: ", t); diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c index 88888fb885c8..69394ac0a20d 100644 --- a/tools/perf/builtin-script.c +++ b/tools/perf/builtin-script.c @@ -2233,7 +2233,7 @@ static void process_event(struct perf_script *script, if (PRINT_FIELD(METRIC)) perf_sample__fprint_metric(script, thread, evsel, sample, fp); - if (verbose) + if (verbose > 0) fflush(fp); } diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index bf640abc9c41..9f3e4b257516 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -266,7 +266,7 @@ static void evlist__check_cpu_maps(struct evlist *evlist) evsel__group_desc(leader, buf, sizeof(buf)); pr_warning(" %s\n", buf); - if (verbose) { + if (verbose > 0) { cpu_map__snprint(leader->core.cpus, buf, sizeof(buf)); pr_warning(" %s: %s\n", leader->name, buf); cpu_map__snprint(evsel->core.cpus, buf, sizeof(buf)); @@ -2493,7 +2493,7 @@ int cmd_stat(int argc, const char **argv) if (iostat_mode == IOSTAT_LIST) { iostat_list(evsel_list, &stat_config); goto out; - } else if (verbose) + } else if (verbose > 0) iostat_list(evsel_list, &stat_config); if (iostat_mode == IOSTAT_RUN && !target__has_cpu(&target)) target.system_wide = true; diff --git a/tools/perf/dlfilters/dlfilter-test-api-v0.c b/tools/perf/dlfilters/dlfilter-test-api-v0.c index b17eb52a0694..b1f51efd67d6 100644 --- a/tools/perf/dlfilters/dlfilter-test-api-v0.c +++ b/tools/perf/dlfilters/dlfilter-test-api-v0.c @@ -119,7 +119,7 @@ struct perf_dlfilter_fns perf_dlfilter_fns; static int verbose; #define pr_debug(fmt, ...) do { \ - if (verbose) \ + if (verbose > 0) \ fprintf(stderr, fmt, ##__VA_ARGS__); \ } while (0) diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c index f6c16ad8ed50..cfa61493c750 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -305,7 +305,7 @@ static int shell_test__run(struct test_suite *test, int subdir __maybe_unused) path__join(script, sizeof(script) - 3, st->dir, st->file); - if (verbose) + if (verbose > 0) strncat(script, " -v", sizeof(script) - strlen(script) - 1); err = system(script); diff --git a/tools/perf/tests/dlfilter-test.c b/tools/perf/tests/dlfilter-test.c index 99aa72e425e4..086fd2179e41 100644 --- a/tools/perf/tests/dlfilter-test.c +++ b/tools/perf/tests/dlfilter-test.c @@ -88,7 +88,7 @@ static __printf(1, 2) int system_cmd(const char *fmt, ...) if (ret <= 0 || ret >= MAXCMD) return -1; - if (!verbose) + if (verbose <= 0) strcat(cmd, REDIRECT_TO_DEV_NULL); pr_debug("Command: %s\n", cmd); diff --git a/tools/perf/util/bpf_lock_contention.c b/tools/perf/util/bpf_lock_contention.c index 8e1b791dc58f..df8dbb5191b4 100644 --- a/tools/perf/util/bpf_lock_contention.c +++ b/tools/perf/util/bpf_lock_contention.c @@ -215,7 +215,7 @@ int lock_contention_read(struct lock_contention *con) break; } - if (verbose) { + if (verbose > 0) { st->callstack = memdup(stack_trace, stack_size); if (st->callstack == NULL) break; diff --git a/tools/perf/util/dlfilter.c b/tools/perf/util/dlfilter.c index 54e4d4495e00..37beb7530288 100644 --- a/tools/perf/util/dlfilter.c +++ b/tools/perf/util/dlfilter.c @@ -579,7 +579,7 @@ static void list_filters(const char *dirname) if (!get_filter_desc(dirname, entry->d_name, &desc, &long_desc)) continue; printf(" %-36s %s\n", entry->d_name, desc ? desc : ""); - if (verbose) { + if (verbose > 0) { char *p = long_desc; char *line; -- 2.30.GIT ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 2/3] perf tools: Fix usage of the verbose variable 2022-12-20 3:57 ` [PATCH 2/3] perf tools: Fix usage of the verbose variable Yang Jihong @ 2022-12-20 7:44 ` Adrian Hunter 0 siblings, 0 replies; 8+ messages in thread From: Adrian Hunter @ 2022-12-20 7:44 UTC (permalink / raw) To: Yang Jihong, peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel On 20/12/22 05:57, Yang Jihong wrote: > The data type of the verbose variable is integer and can be negative, > replace improperly used cases in a unified manner: > 1. if (verbose) => if (verbose > 0) > 2. if (!verbose) => if (verbose <= 0) > 3. if (XX && verbose) => if (XX && verbose > 0) > 4. if (XX && !verbose) => if (XX && verbose <= 0) > > Signed-off-by: Yang Jihong <yangjihong1@huawei.com> Reviewed-by: Adrian Hunter <adrian.hunter@intel.com> > --- > tools/perf/builtin-lock.c | 6 +++--- > tools/perf/builtin-record.c | 4 ++-- > tools/perf/builtin-script.c | 2 +- > tools/perf/builtin-stat.c | 4 ++-- > tools/perf/dlfilters/dlfilter-test-api-v0.c | 2 +- > tools/perf/tests/builtin-test.c | 2 +- > tools/perf/tests/dlfilter-test.c | 2 +- > tools/perf/util/bpf_lock_contention.c | 2 +- > tools/perf/util/dlfilter.c | 2 +- > 9 files changed, 13 insertions(+), 13 deletions(-) > > diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c > index 25c0a5e5051f..6276dfbc94a1 100644 > --- a/tools/perf/builtin-lock.c > +++ b/tools/perf/builtin-lock.c > @@ -1029,7 +1029,7 @@ static int report_lock_contention_begin_event(struct evsel *evsel, > if (!ls) > return -ENOMEM; > > - if (aggr_mode == LOCK_AGGR_CALLER && verbose) { > + if (aggr_mode == LOCK_AGGR_CALLER && verbose > 0) { > ls->callstack = get_callstack(sample, max_stack_depth); > if (ls->callstack == NULL) > return -ENOMEM; > @@ -1214,7 +1214,7 @@ static void print_bad_events(int bad, int total) > for (i = 0; i < BROKEN_MAX; i++) > broken += bad_hist[i]; > > - if (quiet || (broken == 0 && !verbose)) > + if (quiet || (broken == 0 && verbose <= 0)) > return; > > pr_info("\n=== output for debug===\n\n"); > @@ -1529,7 +1529,7 @@ static void print_contention_result(struct lock_contention *con) > break; > } > > - if (aggr_mode == LOCK_AGGR_CALLER && verbose) { > + if (aggr_mode == LOCK_AGGR_CALLER && verbose > 0) { > struct map *kmap; > struct symbol *sym; > char buf[128]; > diff --git a/tools/perf/builtin-record.c b/tools/perf/builtin-record.c > index 8ecffa696ce3..29dcd454b8e2 100644 > --- a/tools/perf/builtin-record.c > +++ b/tools/perf/builtin-record.c > @@ -3629,7 +3629,7 @@ static int record__init_thread_cpu_masks(struct record *rec, struct perf_cpu_map > for (t = 0; t < rec->nr_threads; t++) { > __set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].maps.bits); > __set_bit(perf_cpu_map__cpu(cpus, t).cpu, rec->thread_masks[t].affinity.bits); > - if (verbose) { > + if (verbose > 0) { > pr_debug("thread_masks[%d]: ", t); > mmap_cpu_mask__scnprintf(&rec->thread_masks[t].maps, "maps"); > pr_debug("thread_masks[%d]: ", t); > @@ -3726,7 +3726,7 @@ static int record__init_thread_masks_spec(struct record *rec, struct perf_cpu_ma > } > rec->thread_masks = thread_masks; > rec->thread_masks[t] = thread_mask; > - if (verbose) { > + if (verbose > 0) { > pr_debug("thread_masks[%d]: ", t); > mmap_cpu_mask__scnprintf(&rec->thread_masks[t].maps, "maps"); > pr_debug("thread_masks[%d]: ", t); > diff --git a/tools/perf/builtin-script.c b/tools/perf/builtin-script.c > index 88888fb885c8..69394ac0a20d 100644 > --- a/tools/perf/builtin-script.c > +++ b/tools/perf/builtin-script.c > @@ -2233,7 +2233,7 @@ static void process_event(struct perf_script *script, > if (PRINT_FIELD(METRIC)) > perf_sample__fprint_metric(script, thread, evsel, sample, fp); > > - if (verbose) > + if (verbose > 0) > fflush(fp); > } > > diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c > index bf640abc9c41..9f3e4b257516 100644 > --- a/tools/perf/builtin-stat.c > +++ b/tools/perf/builtin-stat.c > @@ -266,7 +266,7 @@ static void evlist__check_cpu_maps(struct evlist *evlist) > evsel__group_desc(leader, buf, sizeof(buf)); > pr_warning(" %s\n", buf); > > - if (verbose) { > + if (verbose > 0) { > cpu_map__snprint(leader->core.cpus, buf, sizeof(buf)); > pr_warning(" %s: %s\n", leader->name, buf); > cpu_map__snprint(evsel->core.cpus, buf, sizeof(buf)); > @@ -2493,7 +2493,7 @@ int cmd_stat(int argc, const char **argv) > if (iostat_mode == IOSTAT_LIST) { > iostat_list(evsel_list, &stat_config); > goto out; > - } else if (verbose) > + } else if (verbose > 0) > iostat_list(evsel_list, &stat_config); > if (iostat_mode == IOSTAT_RUN && !target__has_cpu(&target)) > target.system_wide = true; > diff --git a/tools/perf/dlfilters/dlfilter-test-api-v0.c b/tools/perf/dlfilters/dlfilter-test-api-v0.c > index b17eb52a0694..b1f51efd67d6 100644 > --- a/tools/perf/dlfilters/dlfilter-test-api-v0.c > +++ b/tools/perf/dlfilters/dlfilter-test-api-v0.c > @@ -119,7 +119,7 @@ struct perf_dlfilter_fns perf_dlfilter_fns; > static int verbose; > > #define pr_debug(fmt, ...) do { \ > - if (verbose) \ > + if (verbose > 0) \ > fprintf(stderr, fmt, ##__VA_ARGS__); \ > } while (0) > > diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-test.c > index f6c16ad8ed50..cfa61493c750 100644 > --- a/tools/perf/tests/builtin-test.c > +++ b/tools/perf/tests/builtin-test.c > @@ -305,7 +305,7 @@ static int shell_test__run(struct test_suite *test, int subdir __maybe_unused) > > path__join(script, sizeof(script) - 3, st->dir, st->file); > > - if (verbose) > + if (verbose > 0) > strncat(script, " -v", sizeof(script) - strlen(script) - 1); > > err = system(script); > diff --git a/tools/perf/tests/dlfilter-test.c b/tools/perf/tests/dlfilter-test.c > index 99aa72e425e4..086fd2179e41 100644 > --- a/tools/perf/tests/dlfilter-test.c > +++ b/tools/perf/tests/dlfilter-test.c > @@ -88,7 +88,7 @@ static __printf(1, 2) int system_cmd(const char *fmt, ...) > if (ret <= 0 || ret >= MAXCMD) > return -1; > > - if (!verbose) > + if (verbose <= 0) > strcat(cmd, REDIRECT_TO_DEV_NULL); > > pr_debug("Command: %s\n", cmd); > diff --git a/tools/perf/util/bpf_lock_contention.c b/tools/perf/util/bpf_lock_contention.c > index 8e1b791dc58f..df8dbb5191b4 100644 > --- a/tools/perf/util/bpf_lock_contention.c > +++ b/tools/perf/util/bpf_lock_contention.c > @@ -215,7 +215,7 @@ int lock_contention_read(struct lock_contention *con) > break; > } > > - if (verbose) { > + if (verbose > 0) { > st->callstack = memdup(stack_trace, stack_size); > if (st->callstack == NULL) > break; > diff --git a/tools/perf/util/dlfilter.c b/tools/perf/util/dlfilter.c > index 54e4d4495e00..37beb7530288 100644 > --- a/tools/perf/util/dlfilter.c > +++ b/tools/perf/util/dlfilter.c > @@ -579,7 +579,7 @@ static void list_filters(const char *dirname) > if (!get_filter_desc(dirname, entry->d_name, &desc, &long_desc)) > continue; > printf(" %-36s %s\n", entry->d_name, desc ? desc : ""); > - if (verbose) { > + if (verbose > 0) { > char *p = long_desc; > char *line; > ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 3/3] perf probe: Check -v and -q options in the right place 2022-12-20 3:56 [PATCH 0/3] Fixes for debug variables Yang Jihong 2022-12-20 3:57 ` [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option Yang Jihong 2022-12-20 3:57 ` [PATCH 2/3] perf tools: Fix usage of the verbose variable Yang Jihong @ 2022-12-20 3:57 ` Yang Jihong 2022-12-20 11:12 ` Adrian Hunter 2 siblings, 1 reply; 8+ messages in thread From: Yang Jihong @ 2022-12-20 3:57 UTC (permalink / raw) To: peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, adrian.hunter, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel Cc: yangjihong1 Check the -q and -v options first to return earlier on error. Before: # perf probe -q -v test probe-definition(0): test symbol:test file:(null) line:0 offset:0 return:0 lazy:(null) 0 arguments Error: -v and -q are exclusive. After: # perf probe -q -v test Error: -v and -q are exclusive. Fixes: 5e17b28f1e24 ("perf probe: Add --quiet option to suppress output result message") Signed-off-by: Yang Jihong <yangjihong1@huawei.com> --- tools/perf/builtin-probe.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c index 2ae50fc9e597..ed73d0b89ca2 100644 --- a/tools/perf/builtin-probe.c +++ b/tools/perf/builtin-probe.c @@ -612,6 +612,15 @@ __cmd_probe(int argc, const char **argv) argc = parse_options(argc, argv, options, probe_usage, PARSE_OPT_STOP_AT_NON_OPTION); + + if (quiet) { + if (verbose != 0) { + pr_err(" Error: -v and -q are exclusive.\n"); + return -EINVAL; + } + verbose = -1; + } + if (argc > 0) { if (strcmp(argv[0], "-") == 0) { usage_with_options_msg(probe_usage, options, @@ -633,14 +642,6 @@ __cmd_probe(int argc, const char **argv) if (ret) return ret; - if (quiet) { - if (verbose != 0) { - pr_err(" Error: -v and -q are exclusive.\n"); - return -EINVAL; - } - verbose = -1; - } - if (probe_conf.max_probes == 0) probe_conf.max_probes = MAX_PROBES; -- 2.30.GIT ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 3/3] perf probe: Check -v and -q options in the right place 2022-12-20 3:57 ` [PATCH 3/3] perf probe: Check -v and -q options in the right place Yang Jihong @ 2022-12-20 11:12 ` Adrian Hunter 0 siblings, 0 replies; 8+ messages in thread From: Adrian Hunter @ 2022-12-20 11:12 UTC (permalink / raw) To: Yang Jihong, peterz, mingo, acme, mark.rutland, alexander.shishkin, jolsa, namhyung, irogers, carsten.haitzler, leo.yan, ravi.bangoria, martin.lau, ak, masami.hiramatsu.pt, linux-perf-users, linux-kernel On 20/12/22 05:57, Yang Jihong wrote: > Check the -q and -v options first to return earlier on error. > > Before: > # perf probe -q -v test > probe-definition(0): test > symbol:test file:(null) line:0 offset:0 return:0 lazy:(null) > 0 arguments > Error: -v and -q are exclusive. > > After: > # perf probe -q -v test > Error: -v and -q are exclusive. > > Fixes: 5e17b28f1e24 ("perf probe: Add --quiet option to suppress output result message") > Signed-off-by: Yang Jihong <yangjihong1@huawei.com> Reviewed-by: Adrian Hunter <adrian.hunter@intel.com> > --- > tools/perf/builtin-probe.c | 17 +++++++++-------- > 1 file changed, 9 insertions(+), 8 deletions(-) > > diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c > index 2ae50fc9e597..ed73d0b89ca2 100644 > --- a/tools/perf/builtin-probe.c > +++ b/tools/perf/builtin-probe.c > @@ -612,6 +612,15 @@ __cmd_probe(int argc, const char **argv) > > argc = parse_options(argc, argv, options, probe_usage, > PARSE_OPT_STOP_AT_NON_OPTION); > + > + if (quiet) { > + if (verbose != 0) { > + pr_err(" Error: -v and -q are exclusive.\n"); > + return -EINVAL; > + } > + verbose = -1; > + } > + > if (argc > 0) { > if (strcmp(argv[0], "-") == 0) { > usage_with_options_msg(probe_usage, options, > @@ -633,14 +642,6 @@ __cmd_probe(int argc, const char **argv) > if (ret) > return ret; > > - if (quiet) { > - if (verbose != 0) { > - pr_err(" Error: -v and -q are exclusive.\n"); > - return -EINVAL; > - } > - verbose = -1; > - } > - > if (probe_conf.max_probes == 0) > probe_conf.max_probes = MAX_PROBES; > ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-12-20 18:17 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-12-20 3:56 [PATCH 0/3] Fixes for debug variables Yang Jihong 2022-12-20 3:57 ` [PATCH 1/3] perf tools: Set debug_peo_args and redirect_to_stderr to correct values in perf_quiet_option Yang Jihong 2022-12-20 7:35 ` Adrian Hunter 2022-12-20 18:17 ` Arnaldo Carvalho de Melo 2022-12-20 3:57 ` [PATCH 2/3] perf tools: Fix usage of the verbose variable Yang Jihong 2022-12-20 7:44 ` Adrian Hunter 2022-12-20 3:57 ` [PATCH 3/3] perf probe: Check -v and -q options in the right place Yang Jihong 2022-12-20 11:12 ` Adrian Hunter
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).