aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2016-02-14 11:03:42 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2016-02-16 15:12:56 -0500
commit975f14fa8f2996604f248552eee4403def34bf5e (patch)
treeb1e32a5c9b34b50f6c6748b13e08e08da25cf0bf /tools
parentd646ae0a73deb0d80792a6a9c0757317ad8049c5 (diff)
tools lib api: Add debug output support
Adding support for warning/info/debug output within libapi code. Adding following macros: pr_warning(fmt, ...) pr_info(fmt, ...) pr_debug(fmt, ...) Also adding libapi_set_print function to set above functions. This will be used in perf to set standard debug handlers for libapi. Adding 2 header files: debug.h - to be used outside libapi, contains libapi_set_print interface debug-internal.h - to be used within libapi, contains pr_warning/pr_info/pr_debug definitions Signed-off-by: Jiri Olsa <jolsa@kernel.org> Cc: David Ahern <dsahern@gmail.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Link: http://lkml.kernel.org/r/1455465826-8426-2-git-send-email-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/lib/api/Build1
-rw-r--r--tools/lib/api/Makefile1
-rw-r--r--tools/lib/api/debug-internal.h20
-rw-r--r--tools/lib/api/debug.c28
-rw-r--r--tools/lib/api/debug.h10
5 files changed, 60 insertions, 0 deletions
diff --git a/tools/lib/api/Build b/tools/lib/api/Build
index e8b8a23b9bf4..954c644f7ad9 100644
--- a/tools/lib/api/Build
+++ b/tools/lib/api/Build
@@ -1,3 +1,4 @@
1libapi-y += fd/ 1libapi-y += fd/
2libapi-y += fs/ 2libapi-y += fs/
3libapi-y += cpu.o 3libapi-y += cpu.o
4libapi-y += debug.o
diff --git a/tools/lib/api/Makefile b/tools/lib/api/Makefile
index d85904dc9b38..bbc82c614bee 100644
--- a/tools/lib/api/Makefile
+++ b/tools/lib/api/Makefile
@@ -18,6 +18,7 @@ LIBFILE = $(OUTPUT)libapi.a
18CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) 18CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
19CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC 19CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC
20CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 20CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
21CFLAGS += -I$(srctree)/tools/lib/api
21 22
22RM = rm -f 23RM = rm -f
23 24
diff --git a/tools/lib/api/debug-internal.h b/tools/lib/api/debug-internal.h
new file mode 100644
index 000000000000..188f7880eafe
--- /dev/null
+++ b/tools/lib/api/debug-internal.h
@@ -0,0 +1,20 @@
1#ifndef __API_DEBUG_INTERNAL_H__
2#define __API_DEBUG_INTERNAL_H__
3
4#include "debug.h"
5
6#define __pr(func, fmt, ...) \
7do { \
8 if ((func)) \
9 (func)("libapi: " fmt, ##__VA_ARGS__); \
10} while (0)
11
12extern libapi_print_fn_t __pr_warning;
13extern libapi_print_fn_t __pr_info;
14extern libapi_print_fn_t __pr_debug;
15
16#define pr_warning(fmt, ...) __pr(__pr_warning, fmt, ##__VA_ARGS__)
17#define pr_info(fmt, ...) __pr(__pr_info, fmt, ##__VA_ARGS__)
18#define pr_debug(fmt, ...) __pr(__pr_debug, fmt, ##__VA_ARGS__)
19
20#endif /* __API_DEBUG_INTERNAL_H__ */
diff --git a/tools/lib/api/debug.c b/tools/lib/api/debug.c
new file mode 100644
index 000000000000..5fa5cf500a1f
--- /dev/null
+++ b/tools/lib/api/debug.c
@@ -0,0 +1,28 @@
1#include <stdio.h>
2#include <stdarg.h>
3#include "debug.h"
4#include "debug-internal.h"
5
6static int __base_pr(const char *format, ...)
7{
8 va_list args;
9 int err;
10
11 va_start(args, format);
12 err = vfprintf(stderr, format, args);
13 va_end(args);
14 return err;
15}
16
17libapi_print_fn_t __pr_warning = __base_pr;
18libapi_print_fn_t __pr_info = __base_pr;
19libapi_print_fn_t __pr_debug;
20
21void libapi_set_print(libapi_print_fn_t warn,
22 libapi_print_fn_t info,
23 libapi_print_fn_t debug)
24{
25 __pr_warning = warn;
26 __pr_info = info;
27 __pr_debug = debug;
28}
diff --git a/tools/lib/api/debug.h b/tools/lib/api/debug.h
new file mode 100644
index 000000000000..a0872f68fc56
--- /dev/null
+++ b/tools/lib/api/debug.h
@@ -0,0 +1,10 @@
1#ifndef __API_DEBUG_H__
2#define __API_DEBUG_H__
3
4typedef int (*libapi_print_fn_t)(const char *, ...);
5
6void libapi_set_print(libapi_print_fn_t warn,
7 libapi_print_fn_t info,
8 libapi_print_fn_t debug);
9
10#endif /* __API_DEBUG_H__ */