Re: [PATCH] tracecmd: --poll option is not passed down to guest
Steven Rostedt <[email protected]> Thu, 4 Dec 2025 16:23:10 -0500
| Newsgroups | org.kernel.vger.linux-trace-devel |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 24 Oct 2025 14:43:37 -0300 Marcelo Tosatti <[email protected]> wrote: Hi Marcelo, Sorry for the late reply. Unfortunately, trace-cmd updates is usually my low priority task :-/ > --- a/tracecmd/trace-record.c > +++ b/tracecmd/trace-record.c > @@ -6220,9 +6220,16 @@ static void add_arg(struct buffer_instance *instance, > { > char *ptr, *arg; > int i, ret; > + int long_opt; > + > + long_opt = 0; > + for (i = 0; long_options[i].name; i++) { > + if (long_options[i].val == c) > + long_opt = 1; > + } I hate looking at every long option to determine if this is a long option or not. > > /* Short or long arg */ > - if (!(c & 0x80)) { > + if (long_opt == 0) { > ptr = strchr(opts, c); > if (!ptr) > return; /* Not found? */ What about this patch? diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index 4e1157c99294..29938b1bb701 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -5932,36 +5932,39 @@ void init_top_instance(void) init_instance(&top_instance); } +#define LONG_OPT(opt) (0x80 + ((opt) << 8)) +#define IS_LONG_OPT(opt) ((opt) & 0x80) + enum { - OPT_compression = 237, - OPT_file_ver = 238, - OPT_verbose = 239, - OPT_tsc2nsec = 240, - OPT_fork = 241, - OPT_tsyncinterval = 242, - OPT_user = 243, - OPT_procmap = 244, - OPT_quiet = 245, - OPT_debug = 246, - OPT_no_filter = 247, - OPT_max_graph_depth = 248, - OPT_tsoffset = 249, - OPT_bycomm = 250, - OPT_stderr = 251, - OPT_profile = 252, - OPT_nosplice = 253, - OPT_funcstack = 254, - OPT_date = 255, - OPT_module = 256, - OPT_nofifos = 257, - OPT_cmdlines_size = 258, - OPT_poll = 259, - OPT_name = 260, - OPT_proxy = 261, - OPT_temp = 262, - OPT_notimeout = 264, - OPT_daemonize = 265, - OPT_subbuf = 266, + OPT_compression = LONG_OPT(0), + OPT_file_ver = LONG_OPT(1), + OPT_verbose = LONG_OPT(2), + OPT_tsc2nsec = LONG_OPT(3), + OPT_fork = LONG_OPT(4), + OPT_tsyncinterval = LONG_OPT(5), + OPT_user = LONG_OPT(6), + OPT_procmap = LONG_OPT(7), + OPT_quiet = LONG_OPT(8), + OPT_debug = LONG_OPT(9), + OPT_no_filter = LONG_OPT(10), + OPT_max_graph_depth = LONG_OPT(11), + OPT_tsoffset = LONG_OPT(12), + OPT_bycomm = LONG_OPT(13), + OPT_stderr = LONG_OPT(14), + OPT_profile = LONG_OPT(15), + OPT_nosplice = LONG_OPT(16), + OPT_funcstack = LONG_OPT(17), + OPT_date = LONG_OPT(18), + OPT_module = LONG_OPT(19), + OPT_nofifos = LONG_OPT(20), + OPT_cmdlines_size = LONG_OPT(21), + OPT_poll = LONG_OPT(22), + OPT_name = LONG_OPT(23), + OPT_proxy = LONG_OPT(24), + OPT_temp = LONG_OPT(25), + OPT_notimeout = LONG_OPT(26), + OPT_daemonize = LONG_OPT(27), + OPT_subbuf = LONG_OPT(28), }; void trace_stop(int argc, char **argv) @@ -6222,7 +6225,7 @@ static void add_arg(struct buffer_instance *instance, int i, ret; /* Short or long arg */ - if (!(c & 0x80)) { + if (!IS_LONG_OPT(c)) { ptr = strchr(opts, c); if (!ptr) return; /* Not found? */ -- Steve