[ovs-dev] [PATCH 1/7] vlog: Add VLOG_WARN_ONCE() and similar macros.

Justin Pettit jpettit at nicira.com
Thu Sep 23 06:00:32 UTC 2010


Looks like a nice addition.

--Justin


On Sep 22, 2010, at 4:45 PM, Ben Pfaff wrote:

> ---
> lib/dpif-linux.c |    6 +-----
> lib/vlog.h       |   15 +++++++++++++++
> 2 files changed, 16 insertions(+), 5 deletions(-)
> 
> diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c
> index 2c688e3..ec8a952 100644
> --- a/lib/dpif-linux.c
> +++ b/lib/dpif-linux.c
> @@ -731,11 +731,7 @@ get_major(const char *target)
>                 return major;
>             }
>         } else {
> -            static bool warned;
> -            if (!warned) {
> -                VLOG_WARN("%s:%d: syntax error", fn, ln);
> -            }
> -            warned = true;
> +            VLOG_WARN_ONCE("%s:%d: syntax error", fn, ln);
>         }
>     }
> 
> diff --git a/lib/vlog.h b/lib/vlog.h
> index 03f17ea..a4e143c 100644
> --- a/lib/vlog.h
> +++ b/lib/vlog.h
> @@ -181,6 +181,12 @@ void vlog_rate_limit(const struct vlog_module *, enum vlog_level,
> #define VLOG_DROP_INFO(RL) vlog_should_drop(THIS_MODULE, VLL_INFO, RL)
> #define VLOG_DROP_DBG(RL) vlog_should_drop(THIS_MODULE, VLL_DBG, RL)
> 
> +/* Macros for logging at most once per execution. */
> +#define VLOG_ERR_ONCE(...) VLOG_ONCE(VLL_ERR, __VA_ARGS__)
> +#define VLOG_WARN_ONCE(...) VLOG_ONCE(VLL_WARN, __VA_ARGS__)
> +#define VLOG_INFO_ONCE(...) VLOG_ONCE(VLL_INFO, __VA_ARGS__)
> +#define VLOG_DBG_ONCE(...) VLOG_ONCE(VLL_DBG, __VA_ARGS__)
> +
> /* Command line processing. */
> #define VLOG_OPTION_ENUMS OPT_LOG_FILE
> #define VLOG_LONG_OPTIONS                                   \
> @@ -208,6 +214,15 @@ void vlog_usage(void);
>             vlog_rate_limit(THIS_MODULE, LEVEL, RL, __VA_ARGS__);   \
>         }                                                           \
>     } while (0)
> +#define VLOG_ONCE(LEVEL, ...)                       \
> +    do {                                            \
> +        static bool already_logged;                 \
> +        if (!already_logged) {                      \
> +            already_logged = true;                  \
> +            vlog(THIS_MODULE, LEVEL, __VA_ARGS__);  \
> +        }                                           \
> +    } while (0)
> +
> #define VLOG_DEFINE_MODULE__(MODULE)                                    \
>         struct vlog_module VLM_##MODULE =                               \
>         {                                                               \
> -- 
> 1.7.1
> 
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org





More information about the dev mailing list