[CRIU] [PATCH 4/8] plugin: allow to use logging function in plugins

Pavel Emelyanov xemul at parallels.com
Mon Dec 16 03:42:03 PST 2013


On 12/16/2013 03:26 PM, Andrey Vagin wrote:
> Signed-off-by: Andrey Vagin <avagin at openvz.org>
> ---
>  include/criu-plugin.h | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  include/log-levels.h  | 12 ------------
>  include/log.h         | 43 +------------------------------------------
>  pie/log-simple.c      |  1 -
>  4 files changed, 51 insertions(+), 55 deletions(-)
>  delete mode 100644 include/log-levels.h
> 
> diff --git a/include/criu-plugin.h b/include/criu-plugin.h
> index b022a5f..e8661b3 100644
> --- a/include/criu-plugin.h
> +++ b/include/criu-plugin.h
> @@ -28,4 +28,54 @@ typedef void (cr_plugin_fini_t)(void);
>  typedef int (cr_plugin_dump_unix_sk_t)(int fd, int id);
>  typedef int (cr_plugin_restore_unix_sk_t)(int id);
>  
> +
> +extern void print_on_level(unsigned int loglevel, const char *format, ...)
> +	__attribute__ ((__format__ (__printf__, 2, 3)));
> +
> +#define LOG_MSG		(0) /* Print message regardless of log level */
> +#define LOG_ERROR	(1) /* Errors only, when we're in trouble */
> +#define LOG_WARN	(2) /* Warnings, dazen and confused but trying to continue */
> +#define LOG_INFO	(3) /* Informative, everything is fine */
> +#define LOG_DEBUG	(4) /* Debug only */
> +
> +#define DEFAULT_LOGLEVEL	LOG_WARN
> +
> +#ifndef LOG_PREFIX
> +# define LOG_PREFIX
> +#endif
> +
> +#define pr_msg(fmt, ...)							\
> +	print_on_level(LOG_MSG,							\
> +		       fmt, ##__VA_ARGS__)
> +
> +#define pr_info(fmt, ...)							\
> +	print_on_level(LOG_INFO,						\
> +		       LOG_PREFIX fmt, ##__VA_ARGS__)
> +
> +#define pr_err(fmt, ...)							\
> +	print_on_level(LOG_ERROR,						\
> +		       "Error (%s:%d): " LOG_PREFIX fmt,			\
> +		       __FILE__, __LINE__, ##__VA_ARGS__)
> +
> +#define pr_err_once(fmt, ...)							\
> +	do {									\
> +		static bool __printed;						\
> +		if (!__printed) {						\
> +			pr_err(fmt, ##__VA_ARGS__);				\
> +			__printed = 1;						\
> +		}								\
> +	} while (0)
> +
> +#define pr_warn(fmt, ...)							\
> +	print_on_level(LOG_WARN,						\
> +		       "Warn  (%s:%d): " LOG_PREFIX fmt,			\
> +		       __FILE__, __LINE__, ##__VA_ARGS__)
> +
> +#define pr_debug(fmt, ...)							\
> +	print_on_level(LOG_DEBUG,						\
> +		       LOG_PREFIX fmt, ##__VA_ARGS__)
> +
> +#define pr_perror(fmt, ...)							\
> +	pr_err(fmt ": %m\n", ##__VA_ARGS__)

Let's place this in criu-log.h and include it in log.h (and if you want in criu-plugin.h)

> +
>  #endif
> diff --git a/include/log-levels.h b/include/log-levels.h
> deleted file mode 100644
> index 3e6753f..0000000
> --- a/include/log-levels.h
> +++ /dev/null
> @@ -1,12 +0,0 @@
> -#ifndef __CR_LOG_LEVELS_H__
> -#define __CR_LOG_LEVELS_H__
> -
> -#define LOG_MSG		(0) /* Print message regardless of log level */
> -#define LOG_ERROR	(1) /* Errors only, when we're in trouble */
> -#define LOG_WARN	(2) /* Warnings, dazen and confused but trying to continue */
> -#define LOG_INFO	(3) /* Informative, everything is fine */
> -#define LOG_DEBUG	(4) /* Debug only */
> -
> -#define DEFAULT_LOGLEVEL	LOG_WARN
> -
> -#endif /* __CR_LOG_LEVELS_H__ */
> diff --git a/include/log.h b/include/log.h
> index 1060254..4f26fc9 100644
> --- a/include/log.h
> +++ b/include/log.h
> @@ -1,7 +1,7 @@
>  #ifndef __CR_LOG_H__
>  #define __CR_LOG_H__
>  
> -#include "log-levels.h"
> +#include "criu-plugin.h"
>  
>  extern int log_init(const char *output);
>  extern void log_fini(void);
> @@ -16,49 +16,8 @@ extern unsigned int log_get_loglevel(void);
>  
>  extern int vprint_num(char *buf, int blen, int num, char **ps);
>  
> -extern void print_on_level(unsigned int loglevel, const char *format, ...)
> -	__attribute__ ((__format__ (__printf__, 2, 3)));
> -
>  extern int write_pidfile(int pid);
>  
> -#ifndef LOG_PREFIX
> -# define LOG_PREFIX
> -#endif
> -
> -#define pr_msg(fmt, ...)							\
> -	print_on_level(LOG_MSG,							\
> -		       fmt, ##__VA_ARGS__)
> -
> -#define pr_info(fmt, ...)							\
> -	print_on_level(LOG_INFO,						\
> -		       LOG_PREFIX fmt, ##__VA_ARGS__)
> -
> -#define pr_err(fmt, ...)							\
> -	print_on_level(LOG_ERROR,						\
> -		       "Error (%s:%d): " LOG_PREFIX fmt,			\
> -		       __FILE__, __LINE__, ##__VA_ARGS__)
> -
> -#define pr_err_once(fmt, ...)							\
> -	do {									\
> -		static bool __printed;						\
> -		if (!__printed) {						\
> -			pr_err(fmt, ##__VA_ARGS__);				\
> -			__printed = 1;						\
> -		}								\
> -	} while (0)
> -
> -#define pr_warn(fmt, ...)							\
> -	print_on_level(LOG_WARN,						\
> -		       "Warn  (%s:%d): " LOG_PREFIX fmt,			\
> -		       __FILE__, __LINE__, ##__VA_ARGS__)
> -
> -#define pr_debug(fmt, ...)							\
> -	print_on_level(LOG_DEBUG,						\
> -		       LOG_PREFIX fmt, ##__VA_ARGS__)
> -
> -#define pr_perror(fmt, ...)							\
> -	pr_err(fmt ": %m\n", ##__VA_ARGS__)
> -
>  #define DEFAULT_LOG_FILENAME "criu.log"
>  
>  extern void print_data(unsigned long addr, unsigned char *data, size_t size);
> diff --git a/pie/log-simple.c b/pie/log-simple.c
> index 701740d..6a9c6ae 100644
> --- a/pie/log-simple.c
> +++ b/pie/log-simple.c
> @@ -4,7 +4,6 @@
>  
>  #include "syscall.h"
>  #include "log.h"
> -#include "log-levels.h"
>  
>  #define LOG_SIMPLE_CHUNK	72
>  
> 




More information about the CRIU mailing list