[CRIU] [PATCH 7/8] libsoccr: Add ability to provide log level mappings
Andrey Vagin
avagin at virtuozzo.com
Sat Nov 4 04:07:12 MSK 2017
On Wed, Nov 01, 2017 at 04:19:24PM +0300, Cyrill Gorcunov wrote:
> Otherwise it might be impossible to notify a calling
> side for certain level.
>
> Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
> ---
> soccr/soccr.c | 30 +++++++++++++++++++++++++++---
> soccr/soccr.h | 2 ++
> 2 files changed, 29 insertions(+), 3 deletions(-)
>
> diff --git a/soccr/soccr.c b/soccr/soccr.c
> index 394095f00556..daf5dbbc1279 100644
> --- a/soccr/soccr.c
> +++ b/soccr/soccr.c
> @@ -67,6 +67,12 @@ enum {
> static void (*log)(unsigned int loglevel, const char *format, ...)
> __attribute__ ((__format__ (__printf__, 2, 3)));
> static unsigned int log_level = 0;
> +static unsigned int *log_level_map;
> +
> +void libsoccr_set_log_level_map(unsigned int *map)
> +{
> + log_level_map = map;
> +}
>
> void libsoccr_set_log(unsigned int level, void (*fn)(unsigned int level, const char *fmt, ...))
> {
> @@ -74,9 +80,27 @@ void libsoccr_set_log(unsigned int level, void (*fn)(unsigned int level, const c
> log = fn;
> }
>
> -#define loge(msg, ...) do { if (log && (log_level >= SOCCR_LOG_ERR)) log(SOCCR_LOG_ERR, "Error (%s:%d): " msg, __FILE__, __LINE__, ##__VA_ARGS__); } while (0)
> -#define logerr(msg, ...) loge(msg ": %s\n", ##__VA_ARGS__, strerror(errno))
> -#define logd(msg, ...) do { if (log && (log_level >= SOCCR_LOG_DBG)) log(SOCCR_LOG_DBG, "Debug: " msg, ##__VA_ARGS__); } while (0)
> +#define loge(msg, ...) \
> + do { \
> + if (log && (log_level >= SOCCR_LOG_ERR)) \
> + log(log_level_map ? \
> + log_level_map[SOCCR_LOG_ERR] : \
> + SOCCR_LOG_ERR, \
> + "Error (%s:%d): " msg, \
> + __FILE__, __LINE__, ##__VA_ARGS__); \
> + } while (0)
> +
> +#define logerr(msg, ...) \
> + loge(msg ": %s\n", ##__VA_ARGS__, strerror(errno)) \
> +
> +#define logd(msg, ...) \
> + do { \
> + if (log && (log_level >= SOCCR_LOG_DBG)) \
> + log(log_level_map ? \
> + log_level_map[SOCCR_LOG_DBG] : \
> + SOCCR_LOG_DBG, \
> + "Debug: " msg, ##__VA_ARGS__); \
> + } while (0)
>
> static int tcp_repair_on(int fd)
> {
> diff --git a/soccr/soccr.h b/soccr/soccr.h
> index 2c34e169b2e7..c0695eaeaee8 100644
> --- a/soccr/soccr.h
> +++ b/soccr/soccr.h
> @@ -55,6 +55,8 @@ void libsoccr_set_log(unsigned int level, void (*fn)(unsigned int level, const c
> #define SOCCR_LOG_ERR 1
> #define SOCCR_LOG_DBG 2
>
> +extern void libsoccr_set_log_level_map(unsigned int *map);
You need to add a description for a public function.
> +
> /*
> * An opaque handler for C/R-ing a TCP socket.
> */
> --
> 2.7.5
>
More information about the CRIU
mailing list