Message ID | 20210428073001.755905-3-tz.stoyanov@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | Add severity to library logs | expand |
On Wed, 28 Apr 2021 10:29:59 +0300 "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > Renamed existing pr_stat() internal function to tep_info() and limit it Unfortunately they are also not internal functions :-( > to print only when the log level is TEP_LOG_INFO. Removed duplicated and > unused functions: > vpr_stat() > __pr_stat() > __vpr_stat() trace-record.c: In function ‘expand_event_files’: trace-record.c:2971:3: warning: implicit declaration of function ‘pr_stat’; did you mean ‘lstat’? [-Wimplicit-function-declaration] 2971 | pr_stat("%s\n", path); | ^~~~~~~ | lstat ctracecmd_wrap.c: In function ‘pr_stat’: ctracecmd_wrap.c:2779:2: warning: implicit declaration of function ‘__vpr_stat’; did you mean ‘pr_stat’? [-Wimplicit-function-declaration] 2779 | __vpr_stat(fmt, ap); | ^~~~~~~~~~ | pr_stat -- Steve
On Wed, 28 Apr 2021 10:29:59 +0300 "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > void tep_info(const char *fmt, ...) > { > va_list ap; > > if (log_level < TEP_LOG_INFO) > return; > > va_start(ap, fmt); > tep_vprint("libtraceevent", TEP_LOG_INFO fmt, ap); > va_end(ap); > } The above should just be: void tep_info(const char *fmt, ...) { va_list ap; va_start(ap, fmt); tep_vprint("libtraceevent", TEP_LOG_INFO fmt, ap); va_end(ap); } And let the tep_vprint() decide to print it or not. -- Steve
On Tue, 4 May 2021 16:00:08 -0400 Steven Rostedt <rostedt@goodmis.org> wrote: > > Renamed existing pr_stat() internal function to tep_info() and limit it > > Unfortunately they are also not internal functions :-( > > > to print only when the log level is TEP_LOG_INFO. Removed duplicated and > > unused functions: > > vpr_stat() > > __pr_stat() > > __vpr_stat() > > trace-record.c: In function ‘expand_event_files’: > trace-record.c:2971:3: warning: implicit declaration of function ‘pr_stat’; did you mean ‘lstat’? [-Wimplicit-function-declaration] > 2971 | pr_stat("%s\n", path); > | ^~~~~~~ > | lstat > > > ctracecmd_wrap.c: In function ‘pr_stat’: > ctracecmd_wrap.c:2779:2: warning: implicit declaration of function ‘__vpr_stat’; did you mean ‘pr_stat’? [-Wimplicit-function-declaration] > 2779 | __vpr_stat(fmt, ap); > | ^~~~~~~~~~ > | pr_stat So I added another patch to bring these back for backward compatibility. Feel free to remove them in this series, and I'll just add that patch at the end: https://lore.kernel.org/linux-trace-devel/20210504163156.2bfdd63d@gandalf.local.home/ But as I still have issues with this patch series and will wait for your reply before applying anything. Thanks, -- Steve
On Tue, May 4, 2021 at 11:24 PM Steven Rostedt <rostedt@goodmis.org> wrote: > > On Wed, 28 Apr 2021 10:29:59 +0300 > "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > > > void tep_info(const char *fmt, ...) > > { > > va_list ap; > > > > if (log_level < TEP_LOG_INFO) > > return; > > > > va_start(ap, fmt); > > tep_vprint("libtraceevent", TEP_LOG_INFO fmt, ap); > > va_end(ap); > > } > > The above should just be: > > void tep_info(const char *fmt, ...) > { > va_list ap; > > va_start(ap, fmt); > tep_vprint("libtraceevent", TEP_LOG_INFO fmt, ap); > va_end(ap); > } > > And let the tep_vprint() decide to print it or not. The tep_vprint() is used also by libtacecmd and libtracefs for printing logs. Each library has its own log_level local variable, that's why I check the log level in the library specific log functions. > > -- Steve
On Wed, 5 May 2021 07:45:44 +0300 Tzvetomir Stoyanov <tz.stoyanov@gmail.com> wrote: > On Tue, May 4, 2021 at 11:24 PM Steven Rostedt <rostedt@goodmis.org> wrote: > > > > On Wed, 28 Apr 2021 10:29:59 +0300 > > "Tzvetomir Stoyanov (VMware)" <tz.stoyanov@gmail.com> wrote: > > > > And let the tep_vprint() decide to print it or not. > > The tep_vprint() is used also by libtacecmd and libtracefs for > printing logs. Each library has its own log_level local variable, > that's why I check the log level in the library specific log > functions. But tep_vprint() looks like this: int __weak tep_vprint(const char *name, enum tep_loglevel level, const char *fmt, va_list ap) { int ret = errno; if (errno && level <= TEP_LOG_WARNING) perror(name); fprintf(stderr, " "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); return ret; } That check of the log level is confusing. Just remove it. In fact, we should add a boolean on whether to print the errno message or not. Like this: int __weak tep_vprint(const char *name, bool print_errno, const char *fmt, va_list ap) { int ret = errno; if (errno && print_errno) perror(name); fprintf(stderr, " "); vfprintf(stderr, fmt, ap); fprintf(stderr, "\n"); return ret; } That would make a lot more sense, and let the callers of it decide to print it or not, and not have the internal level of libtraceevent decide. -- Steve
diff --git a/src/event-parse.c b/src/event-parse.c index 88ec909..97c1a97 100644 --- a/src/event-parse.c +++ b/src/event-parse.c @@ -6927,8 +6927,8 @@ static int find_event_handle(struct tep_handle *tep, struct tep_event *event) if (!(*next)) return 0; - pr_stat("overriding event (%d) %s:%s with new print handler", - event->id, event->system, event->name); + tep_info("overriding event (%d) %s:%s with new print handler", + event->id, event->system, event->name); event->handler = handle->func; event->context = handle->context; @@ -7404,7 +7404,7 @@ int tep_register_print_function(struct tep_handle *tep, * plugins updating the function. This overrides the * system defaults. */ - pr_stat("override of function helper '%s'", name); + tep_info("override of function helper '%s'", name); remove_func_handler(tep, name); } @@ -7542,8 +7542,8 @@ int tep_register_event_handler(struct tep_handle *tep, int id, if (event == NULL) goto not_found; - pr_stat("overriding event (%d) %s:%s with new print handler", - event->id, event->system, event->name); + tep_info("overriding event (%d) %s:%s with new print handler", + event->id, event->system, event->name); event->handler = func; event->context = context; @@ -7628,8 +7628,8 @@ int tep_unregister_event_handler(struct tep_handle *tep, int id, goto not_found; if (event->handler == func && event->context == context) { - pr_stat("removing override handler for event (%d) %s:%s. Going back to default handler.", - event->id, event->system, event->name); + tep_info("removing override handler for event (%d) %s:%s. Going back to default handler.", + event->id, event->system, event->name); event->handler = NULL; event->context = NULL; diff --git a/src/event-plugin.c b/src/event-plugin.c index df4a0a3..f42243f 100644 --- a/src/event-plugin.c +++ b/src/event-plugin.c @@ -497,7 +497,7 @@ load_plugin(struct tep_handle *tep, const char *path, list->name = plugin; *plugin_list = list; - pr_stat("registering plugin: %s", plugin); + tep_info("registering plugin: %s", plugin); func(tep); return; diff --git a/src/event-utils.h b/src/event-utils.h index ff4d6c4..1951557 100644 --- a/src/event-utils.h +++ b/src/event-utils.h @@ -9,15 +9,10 @@ #include <ctype.h> #include <stdarg.h> +void tep_info(const char *fmt, ...); /* Can be overridden */ void tep_warning(const char *fmt, ...); int tep_vwarning(const char *name, const char *fmt, va_list ap); -void pr_stat(const char *fmt, ...); -void vpr_stat(const char *fmt, va_list ap); - -/* Always available */ -void __pr_stat(const char *fmt, ...); -void __vpr_stat(const char *fmt, ...); #define min(x, y) ({ \ typeof(x) _min1 = (x); \ diff --git a/src/parse-utils.c b/src/parse-utils.c index bc89c44..b997823 100644 --- a/src/parse-utils.c +++ b/src/parse-utils.c @@ -50,31 +50,15 @@ void __weak tep_warning(const char *fmt, ...) va_end(ap); } -void __vpr_stat(const char *fmt, va_list ap) -{ - vprintf(fmt, ap); - printf("\n"); -} -void __pr_stat(const char *fmt, ...) +void tep_info(const char *fmt, ...) { va_list ap; - va_start(ap, fmt); - __vpr_stat(fmt, ap); - va_end(ap); -} - -void __weak vpr_stat(const char *fmt, va_list ap) -{ - __vpr_stat(fmt, ap); -} - -void __weak pr_stat(const char *fmt, ...) -{ - va_list ap; + if (log_level < TEP_LOG_INFO) + return; va_start(ap, fmt); - __vpr_stat(fmt, ap); + tep_vwarning("libtraceevent", fmt, ap); va_end(ap); }
Renamed existing pr_stat() internal function to tep_info() and limit it to print only when the log level is TEP_LOG_INFO. Removed duplicated and unused functions: vpr_stat() __pr_stat() __vpr_stat() Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> --- src/event-parse.c | 14 +++++++------- src/event-plugin.c | 2 +- src/event-utils.h | 7 +------ src/parse-utils.c | 24 ++++-------------------- 4 files changed, 13 insertions(+), 34 deletions(-)