lkml.org 
[lkml]   [2016]   [Feb]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 02/10] tools lib api: Add debug output support
    Date
    From: Jiri Olsa <jolsa@kernel.org>

    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>
    ---
    tools/lib/api/Build | 1 +
    tools/lib/api/Makefile | 1 +
    tools/lib/api/debug-internal.h | 20 ++++++++++++++++++++
    tools/lib/api/debug.c | 28 ++++++++++++++++++++++++++++
    tools/lib/api/debug.h | 10 ++++++++++
    5 files changed, 60 insertions(+)
    create mode 100644 tools/lib/api/debug-internal.h
    create mode 100644 tools/lib/api/debug.c
    create mode 100644 tools/lib/api/debug.h

    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 @@
    libapi-y += fd/
    libapi-y += fs/
    libapi-y += cpu.o
    +libapi-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
    CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS)
    CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fPIC
    CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
    +CFLAGS += -I$(srctree)/tools/lib/api

    RM = rm -f

    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 @@
    +#ifndef __API_DEBUG_INTERNAL_H__
    +#define __API_DEBUG_INTERNAL_H__
    +
    +#include "debug.h"
    +
    +#define __pr(func, fmt, ...) \
    +do { \
    + if ((func)) \
    + (func)("libapi: " fmt, ##__VA_ARGS__); \
    +} while (0)
    +
    +extern libapi_print_fn_t __pr_warning;
    +extern libapi_print_fn_t __pr_info;
    +extern libapi_print_fn_t __pr_debug;
    +
    +#define pr_warning(fmt, ...) __pr(__pr_warning, fmt, ##__VA_ARGS__)
    +#define pr_info(fmt, ...) __pr(__pr_info, fmt, ##__VA_ARGS__)
    +#define pr_debug(fmt, ...) __pr(__pr_debug, fmt, ##__VA_ARGS__)
    +
    +#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 @@
    +#include <stdio.h>
    +#include <stdarg.h>
    +#include "debug.h"
    +#include "debug-internal.h"
    +
    +static int __base_pr(const char *format, ...)
    +{
    + va_list args;
    + int err;
    +
    + va_start(args, format);
    + err = vfprintf(stderr, format, args);
    + va_end(args);
    + return err;
    +}
    +
    +libapi_print_fn_t __pr_warning = __base_pr;
    +libapi_print_fn_t __pr_info = __base_pr;
    +libapi_print_fn_t __pr_debug;
    +
    +void libapi_set_print(libapi_print_fn_t warn,
    + libapi_print_fn_t info,
    + libapi_print_fn_t debug)
    +{
    + __pr_warning = warn;
    + __pr_info = info;
    + __pr_debug = debug;
    +}
    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 @@
    +#ifndef __API_DEBUG_H__
    +#define __API_DEBUG_H__
    +
    +typedef int (*libapi_print_fn_t)(const char *, ...);
    +
    +void libapi_set_print(libapi_print_fn_t warn,
    + libapi_print_fn_t info,
    + libapi_print_fn_t debug);
    +
    +#endif /* __API_DEBUG_H__ */
    --
    2.5.0
    \
     
     \ /
      Last update: 2016-02-16 22:01    [W:4.434 / U:0.032 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site