diff options
author | Ben Pfaff <blp@nicira.com> | 2010-09-13 13:29:57 -0700 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2010-09-23 11:45:34 -0700 |
commit | 5136364f41b74de00f86873a6f5be4c8a19cb5ad (patch) | |
tree | 4200269f53b16f087a6704ed40d9ba785b3671f3 /lib/vlog.h | |
parent | 1095d0996bf83e99eab0be964b66403d3fff76f5 (diff) |
vlog: Add VLOG_WARN_ONCE() and similar macros.
Diffstat (limited to 'lib/vlog.h')
-rw-r--r-- | lib/vlog.h | 15 |
1 files changed, 15 insertions, 0 deletions
@@ -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 = \ { \ |