aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com>2021-04-08 07:26:23 +0300
committerSteven Rostedt (VMware) <rostedt@goodmis.org>2021-04-09 11:30:00 -0400
commit96c19f469b179ab8a7908fbb3d161034deb6ec60 (patch)
tree89a9ae97421641a397413995b4070c024349d197
parente9659b244c5a85d7780019534baab3279dbf5844 (diff)
downloadlibtraceevent-96c19f469b179ab8a7908fbb3d161034deb6ec60.tar.gz
libtraceevent: Add tep_warning()
The traceevent library uses a function with generic name warning() to print various warning messages. This function is implemented as a weak and can be overridden by the application. However, as the name is generic, there could be collisions with other libraries or application, using the functin with the same name. Renamed warning() to tep_warning(). Renamed__vwarning to tep_vwarning(). Both functions are weak and can be overrriden. Overriding tep_warning() affects only the warnings of libtraceevent library. The tep_vwarning() is used by all tracing libraries: libtraceevent, libtrasefs and libtracecmd. Overriding tep_vwarning() affects the warnings of all those libraries. Removed the existing __warning() function, as it is not used by the library. Link: https://lore.kernel.org/linux-trace-devel/20210408042623.3112002-1-tz.stoyanov@gmail.com Signed-off-by: Tzvetomir Stoyanov (VMware) <tz.stoyanov@gmail.com> Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
-rw-r--r--plugins/plugin_function.c4
-rw-r--r--src/event-parse.c22
-rw-r--r--src/event-plugin.c14
-rw-r--r--src/event-utils.h7
-rw-r--r--src/parse-utils.c21
5 files changed, 30 insertions, 38 deletions
diff --git a/plugins/plugin_function.c b/plugins/plugin_function.c
index 807b16e..93bdcc2 100644
--- a/plugins/plugin_function.c
+++ b/plugins/plugin_function.c
@@ -65,7 +65,7 @@ static void add_child(struct func_stack *stack, const char *child, int pos)
ptr = realloc(stack->stack, sizeof(char *) *
(stack->size + STK_BLK));
if (!ptr) {
- warning("could not allocate plugin memory\n");
+ tep_warning("could not allocate plugin memory\n");
return;
}
@@ -91,7 +91,7 @@ static int add_and_get_index(const char *parent, const char *child, int cpu)
ptr = realloc(fstack, sizeof(*fstack) * (cpu + 1));
if (!ptr) {
- warning("could not allocate plugin memory\n");
+ tep_warning("could not allocate plugin memory\n");
return 0;
}
diff --git a/src/event-parse.c b/src/event-parse.c
index 2307e33..7c1f4cb 100644
--- a/src/event-parse.c
+++ b/src/event-parse.c
@@ -39,19 +39,19 @@ static int show_warning = 1;
#define do_warning(fmt, ...) \
do { \
if (show_warning) \
- warning(fmt, ##__VA_ARGS__); \
+ tep_warning(fmt, ##__VA_ARGS__);\
} while (0)
-#define do_warning_event(event, fmt, ...) \
- do { \
- if (!show_warning) \
- continue; \
- \
- if (event) \
- warning("[%s:%s] " fmt, event->system, \
- event->name, ##__VA_ARGS__); \
- else \
- warning(fmt, ##__VA_ARGS__); \
+#define do_warning_event(event, fmt, ...) \
+ do { \
+ if (!show_warning) \
+ continue; \
+ \
+ if (event) \
+ tep_warning("[%s:%s] " fmt, event->system, \
+ event->name, ##__VA_ARGS__); \
+ else \
+ tep_warning(fmt, ##__VA_ARGS__); \
} while (0)
/**
diff --git a/src/event-plugin.c b/src/event-plugin.c
index e7f93d5..df4a0a3 100644
--- a/src/event-plugin.c
+++ b/src/event-plugin.c
@@ -454,14 +454,14 @@ load_plugin(struct tep_handle *tep, const char *path,
ret = asprintf(&plugin, "%s/%s", path, file);
if (ret < 0) {
- warning("could not allocate plugin memory\n");
+ tep_warning("could not allocate plugin memory\n");
return;
}
handle = dlopen(plugin, RTLD_NOW | RTLD_GLOBAL);
if (!handle) {
- warning("could not load plugin '%s'\n%s\n",
- plugin, dlerror());
+ tep_warning("could not load plugin '%s'\n%s\n",
+ plugin, dlerror());
goto out_free;
}
@@ -481,14 +481,14 @@ load_plugin(struct tep_handle *tep, const char *path,
func = dlsym(handle, TEP_PLUGIN_LOADER_NAME);
if (!func) {
- warning("could not find func '%s' in plugin '%s'\n%s\n",
- TEP_PLUGIN_LOADER_NAME, plugin, dlerror());
+ tep_warning("could not find func '%s' in plugin '%s'\n%s\n",
+ TEP_PLUGIN_LOADER_NAME, plugin, dlerror());
goto out_free;
}
list = malloc(sizeof(*list));
if (!list) {
- warning("could not allocate plugin memory\n");
+ tep_warning("could not allocate plugin memory\n");
goto out_free;
}
@@ -616,7 +616,7 @@ void tep_load_plugins_hook(struct tep_handle *tep, const char *suffix,
ret = asprintf(&path, "%s/%s", home, LOCAL_PLUGIN_DIR);
if (ret < 0) {
- warning("could not allocate plugin memory\n");
+ tep_warning("could not allocate plugin memory\n");
return;
}
diff --git a/src/event-utils.h b/src/event-utils.h
index 0560b96..ff4d6c4 100644
--- a/src/event-utils.h
+++ b/src/event-utils.h
@@ -7,17 +7,16 @@
#define __UTIL_H
#include <ctype.h>
+#include <stdarg.h>
/* Can be overridden */
-void warning(const char *fmt, ...);
+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 __warning(const char *fmt, ...);
void __pr_stat(const char *fmt, ...);
-
-void __vwarning(const char *fmt, ...);
void __vpr_stat(const char *fmt, ...);
#define min(x, y) ({ \
diff --git a/src/parse-utils.c b/src/parse-utils.c
index e998671..6a4a2cd 100644
--- a/src/parse-utils.c
+++ b/src/parse-utils.c
@@ -11,33 +11,26 @@
#define __weak __attribute__((weak))
-void __vwarning(const char *fmt, va_list ap)
+int __weak tep_vwarning(const char *name, const char *fmt, va_list ap)
{
+ int ret = errno;
+
if (errno)
- perror("libtraceevent");
- errno = 0;
+ perror(name);
fprintf(stderr, " ");
vfprintf(stderr, fmt, ap);
-
fprintf(stderr, "\n");
-}
-
-void __warning(const char *fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- __vwarning(fmt, ap);
- va_end(ap);
+ return ret;
}
-void __weak warning(const char *fmt, ...)
+void __weak tep_warning(const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
- __vwarning(fmt, ap);
+ tep_vwarning("libtraceevent", fmt, ap);
va_end(ap);
}