Message ID | 20190814084712.28188-5-tz.stoyanov@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Steven Rostedt |
Headers | show |
Series | Separate trace-cmd and libtracecmd code | expand |
On Wed, 14 Aug 2019 11:47:04 +0300 "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > void tracecmd_set_quiet(int quiet); > int tracecmd_get_quiet(void); I rather make this a parameter to the descriptor: tracecmd_set_quiet(struct tracecmd_output *handle, bool quiet); tracecmd_get_quiet(struct tracecmd output *handle); As we may have multiple handles and perhaps we don't want all of them quiet. -- Steve
On Wed, Aug 28, 2019 at 10:59 PM Steven Rostedt <rostedt@goodmis.org> wrote: > > On Wed, 14 Aug 2019 11:47:04 +0300 > "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > > > void tracecmd_set_quiet(int quiet); > > int tracecmd_get_quiet(void); > > I rather make this a parameter to the descriptor: > > tracecmd_set_quiet(struct tracecmd_output *handle, bool quiet); > tracecmd_get_quiet(struct tracecmd output *handle); > > As we may have multiple handles and perhaps we don't want all of them > quiet. > It makes sense to have "quiet" per tracecmd_output handler, but when I started to modify the code, I noticed one flow where tracecmd_get_quiet() is used and there is no tracecmd_output handler available - in check_plugin(). We have either to drop the usage of tracecmd_get_quiet() in check_plugin(), or leave the scope of "quiet" to be for the whole library. > -- Steve
On Thu, 29 Aug 2019 14:39:43 +0300 Tzvetomir Stoyanov <tz.stoyanov@gmail.com> wrote: > On Wed, Aug 28, 2019 at 10:59 PM Steven Rostedt <rostedt@goodmis.org> wrote: > > > > On Wed, 14 Aug 2019 11:47:04 +0300 > > "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > > > > > void tracecmd_set_quiet(int quiet); > > > int tracecmd_get_quiet(void); > > > > I rather make this a parameter to the descriptor: > > > > tracecmd_set_quiet(struct tracecmd_output *handle, bool quiet); > > tracecmd_get_quiet(struct tracecmd output *handle); > > > > As we may have multiple handles and perhaps we don't want all of them > > quiet. > > > It makes sense to have "quiet" per tracecmd_output handler, but when I > started to modify the code, > I noticed one flow where tracecmd_get_quiet() is used and there is no > tracecmd_output handler available - > in check_plugin(). We have either to drop the usage of > tracecmd_get_quiet() in check_plugin(), or leave the scope of > "quiet" to be for the whole library. We can still have a global variable in trace-record.c called quiet. And that gets set by the parameter: case OPT_quite: case 'q': quiet = 1; break; [..] tracecmd_set_quiet(handle, quiet); This is the proper way to handle it. The functions local to trace-record.c, can just use its own quiet state variable, but when we set quiet, we use the tracecmd_set_quiet() to notify the library that it too should be quiet. -- Steve
diff --git a/include/trace-cmd/trace-cmd.h b/include/trace-cmd/trace-cmd.h index c4a437a..5ce8fb3 100644 --- a/include/trace-cmd/trace-cmd.h +++ b/include/trace-cmd/trace-cmd.h @@ -49,6 +49,9 @@ enum { void tracecmd_record_ref(struct tep_record *record); void free_record(struct tep_record *record); +void tracecmd_set_quiet(int quiet); +int tracecmd_get_quiet(void); + struct tracecmd_input; struct tracecmd_output; struct tracecmd_recorder; diff --git a/lib/trace-cmd/include/trace-cmd-local.h b/lib/trace-cmd/include/trace-cmd-local.h index bad325f..09574db 100644 --- a/lib/trace-cmd/include/trace-cmd-local.h +++ b/lib/trace-cmd/include/trace-cmd-local.h @@ -18,8 +18,6 @@ #define STR(x) _STR(x) #define FILE_VERSION_STRING STR(FILE_VERSION) -extern int quiet; - static ssize_t __do_write(int fd, const void *data, size_t size) { ssize_t tot = 0; diff --git a/lib/trace-cmd/trace-output.c b/lib/trace-cmd/trace-output.c index 1f94346..35252ef 100644 --- a/lib/trace-cmd/trace-output.c +++ b/lib/trace-cmd/trace-output.c @@ -1157,7 +1157,7 @@ int tracecmd_write_cpu_data(struct tracecmd_output *handle, goto out_free; for (i = 0; i < cpus; i++) { - if (!quiet) + if (!tracecmd_get_quiet()) fprintf(stderr, "CPU%d data recorded at offset=0x%llx\n", i, (unsigned long long) offsets[i]); offset = lseek64(handle->fd, offsets[i], SEEK_SET); @@ -1172,7 +1172,7 @@ int tracecmd_write_cpu_data(struct tracecmd_output *handle, check_size, sizes[i]); goto out_free; } - if (!quiet) + if (!tracecmd_get_quiet()) fprintf(stderr, " %llu bytes in size\n", (unsigned long long)check_size); } diff --git a/lib/trace-cmd/trace-util.c b/lib/trace-cmd/trace-util.c index 7c74bae..26b9a18 100644 --- a/lib/trace-cmd/trace-util.c +++ b/lib/trace-cmd/trace-util.c @@ -28,6 +28,7 @@ int tracecmd_disable_sys_plugins; int tracecmd_disable_plugins; +static int tracecmd_quiet; static struct registered_plugin_options { struct registered_plugin_options *next; @@ -96,6 +97,26 @@ char **trace_util_list_plugin_options(void) return list; } +/** + * tracecmd_set_quiet - Set if to print output to the screen + * @quiet: If non zero, print no output to the screen + * + */ +void tracecmd_set_quiet(int quiet) +{ + tracecmd_quiet = quiet; +} + +/** + * tracecmd_get_quiet - Get if to print output to the screen + * Returns non zero, if no output to the screen should be printed + * + */ +int tracecmd_get_quiet(void) +{ + return tracecmd_quiet; +} + void trace_util_free_plugin_options_list(char **list) { tracecmd_free_list(list); diff --git a/tracecmd/include/trace-local.h b/tracecmd/include/trace-local.h index 78c52dc..23a3a29 100644 --- a/tracecmd/include/trace-local.h +++ b/tracecmd/include/trace-local.h @@ -13,7 +13,6 @@ #include "event-utils.h" extern int debug; -extern int quiet; /* fix stupid glib guint64 typecasts and printf formats */ typedef unsigned long long u64; diff --git a/tracecmd/trace-cmd.c b/tracecmd/trace-cmd.c index 797b303..5283ba7 100644 --- a/tracecmd/trace-cmd.c +++ b/tracecmd/trace-cmd.c @@ -17,7 +17,6 @@ int silence_warnings; int show_status; int debug; -int quiet; void warning(const char *fmt, ...) { diff --git a/tracecmd/trace-record.c b/tracecmd/trace-record.c index b2ed6bf..b25b659 100644 --- a/tracecmd/trace-record.c +++ b/tracecmd/trace-record.c @@ -3387,7 +3387,7 @@ static void print_stat(struct buffer_instance *instance) { int cpu; - if (quiet) + if (tracecmd_get_quiet()) return; if (!is_top_instance(instance)) @@ -4207,7 +4207,7 @@ static void check_plugin(const char *plugin) } die ("Plugin '%s' does not exist", plugin); out: - if (!quiet) + if (!tracecmd_get_quiet()) fprintf(stderr, " plugin '%s'\n", plugin); free(buf); } @@ -5154,7 +5154,7 @@ static void parse_record_options(int argc, break; case OPT_quiet: case 'q': - quiet = 1; + tracecmd_set_quiet(1); break; default: usage(argv);
A trace-cmd global variable "quiet" is used from libtracecmd and should be defined there. A new library APIs are implemented to access it: void tracecmd_set_quiet(int quiet); int tracecmd_get_quiet(void); Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- include/trace-cmd/trace-cmd.h | 3 +++ lib/trace-cmd/include/trace-cmd-local.h | 2 -- lib/trace-cmd/trace-output.c | 4 ++-- lib/trace-cmd/trace-util.c | 21 +++++++++++++++++++++ tracecmd/include/trace-local.h | 1 - tracecmd/trace-cmd.c | 1 - tracecmd/trace-record.c | 6 +++--- 7 files changed, 29 insertions(+), 9 deletions(-)