Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751275AbdCQOKB (ORCPT ); Fri, 17 Mar 2017 10:10:01 -0400 Received: from mail.kernel.org ([198.145.29.136]:47934 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751043AbdCQOIk (ORCPT ); Fri, 17 Mar 2017 10:08:40 -0400 Date: Fri, 17 Mar 2017 11:08:34 -0300 From: Arnaldo Carvalho de Melo To: changbin.du@intel.com Cc: peterz@infradead.org, mingo@redhat.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH] perf lock: subcommands should include common options Message-ID: <20170317140834.GC12825@kernel.org> References: <20170317055342.8284-1-changbin.du@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170317055342.8284-1-changbin.du@intel.com> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.7.1 (2016-10-04) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2483 Lines: 68 Em Fri, Mar 17, 2017 at 01:53:42PM +0800, changbin.du@intel.com escreveu: > From: Changbin Du > > When I use -i option for report subcommand, it doesn't accept it. > We need add common options using OPT_PARENT macro. > > perf lock report -i lock_perf.data > Error: unknown switch `i' > > Usage: perf lock report [] > > -f, --force don't complain, do it > -k, --key key for sorting ... > > Signed-off-by: Changbin Du > --- > tools/perf/builtin-lock.c | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/tools/perf/builtin-lock.c b/tools/perf/builtin-lock.c > index ce3bfb4..710c551 100644 > --- a/tools/perf/builtin-lock.c > +++ b/tools/perf/builtin-lock.c > @@ -947,27 +947,30 @@ static int __cmd_record(int argc, const char **argv) > > int cmd_lock(int argc, const char **argv, const char *prefix __maybe_unused) > { > + const struct option lock_options[] = { > + OPT_STRING('i', "input", &input_name, "file", "input file name"), > + OPT_INCR('v', "verbose", &verbose, "be more verbose (show symbol address, etc)"), > + OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, "dump raw trace in ASCII"), > + OPT_END() > + }; > + > const struct option info_options[] = { > OPT_BOOLEAN('t', "threads", &info_threads, > "dump thread list in perf.data"), > OPT_BOOLEAN('m', "map", &info_map, > "map of lock instances (address:name table)"), > OPT_BOOLEAN('f', "force", &force, "don't complain, do it"), Good catch, OPT_PARENT came after 'perf lock', but you forgot 'f', I'm adding it and renaming 'lock_options' to 'lock_input_options', ok? > - OPT_END() > - }; > - const struct option lock_options[] = { > - OPT_STRING('i', "input", &input_name, "file", "input file name"), > - OPT_INCR('v', "verbose", &verbose, "be more verbose (show symbol address, etc)"), > - OPT_BOOLEAN('D', "dump-raw-trace", &dump_trace, "dump raw trace in ASCII"), > - OPT_END() > + OPT_PARENT(lock_options) > }; > + > const struct option report_options[] = { > OPT_STRING('k', "key", &sort_key, "acquired", > "key for sorting (acquired / contended / avg_wait / wait_total / wait_max / wait_min)"), > OPT_BOOLEAN('f', "force", &force, "don't complain, do it"), > /* TODO: type */ > - OPT_END() > + OPT_PARENT(lock_options) > }; > + > const char * const info_usage[] = { > "perf lock info []", > NULL > -- > 2.7.4