|
@@ -41,14 +41,14 @@
|
|
|
#if __STDC_VERSION__ < 199901L
|
|
|
# if __GNUC__ >= 2
|
|
|
# define _FUNC_NAME_ __FUNCTION__
|
|
|
-# define _FUNC_FMT_ "%s(): "
|
|
|
+# define _FUNC_SUFFIX_ "(): "
|
|
|
# else
|
|
|
# define _FUNC_NAME_ ""
|
|
|
-# define _FUNC_FMT_ "%s"
|
|
|
+# define _FUNC_SUFFIX_ ""
|
|
|
# endif
|
|
|
#else
|
|
|
# define _FUNC_NAME_ __func__
|
|
|
-# define _FUNC_FMT_ "%s(): "
|
|
|
+# define _FUNC_SUFFIX_ "(): "
|
|
|
#endif
|
|
|
|
|
|
#ifdef NO_DEBUG
|
|
@@ -194,29 +194,36 @@ void log_prefix_init(void);
|
|
|
#define LOGV_PREFIX_STR ((log_prefix_val)?log_prefix_val->s:"")
|
|
|
#define LOGV_PREFIX_LEN ((log_prefix_val)?log_prefix_val->len:0)
|
|
|
|
|
|
+#define LOGV_FUNCNAME_STR(vfuncname) ((vfuncname)?vfuncname:"")
|
|
|
+#define LOGV_FUNCSUFFIX_STR(vfuncname) ((vfuncname)?_FUNC_SUFFIX_:"")
|
|
|
+
|
|
|
/** @brief
|
|
|
* General logging macros
|
|
|
*
|
|
|
- * LOG_(level, prefix, fmt, ...) prints "printf"-formatted log message to
|
|
|
+ * LOG_FF(level, prefix, fmt, ...) prints "printf"-formatted log message to
|
|
|
* stderr (if `log_stderr' is non-zero) or to syslog. Note that `fmt' must
|
|
|
* be constant. `prefix' is added to the beginning of the message.
|
|
|
*
|
|
|
- * LOG(level, fmt, ...) is same as LOG_() with LOC_INFO prefix.
|
|
|
+ * LOG(level, fmt, ...) is same as LOG_FP() with LOC_INFO prefix.
|
|
|
*/
|
|
|
#ifdef NO_LOG
|
|
|
|
|
|
# ifdef __SUNPRO_C
|
|
|
-# define LOG__(facility, level, lname, prefix, ...)
|
|
|
-# define LOG_(facility, level, prefix, ...)
|
|
|
-# define LOG(level, fmt, ...)
|
|
|
+# define LOG_FX(facility, level, lname, prefix, funcname, ...)
|
|
|
+# define LOG_FL(facility, level, lname, prefix, ...)
|
|
|
+# define LOG_FP(facility, level, prefix, ...)
|
|
|
+# define LOG_FN(facility, level, prefix, ...)
|
|
|
# define LOG_FC(facility, level, ...)
|
|
|
# define LOG_LN(level, lname, ...)
|
|
|
+# define LOG(level, fmt, ...)
|
|
|
# else
|
|
|
-# define LOG__(facility, level, lname, prefix, fmt, args...)
|
|
|
-# define LOG_(facility, level, prefix, fmt, args...)
|
|
|
-# define LOG(level, fmt, args...)
|
|
|
+# define LOG_FX(facility, level, lname, prefix, funcname, fmt, args...)
|
|
|
+# define LOG_FL(facility, level, lname, prefix, fmt, args...)
|
|
|
+# define LOG_FP(facility, level, prefix, fmt, args...)
|
|
|
+# define LOG_FN(facility, level, prefix, fmt, args...)
|
|
|
# define LOG_FC(facility, level, fmt, args...)
|
|
|
# define LOG_LN(level, lname, fmt, args...)
|
|
|
+# define LOG(level, fmt, args...)
|
|
|
# endif
|
|
|
|
|
|
#else
|
|
@@ -232,7 +239,7 @@ void log_prefix_init(void);
|
|
|
# endif
|
|
|
|
|
|
# ifdef __SUNPRO_C
|
|
|
-# define LOG__(facility, level, lname, prefix, fmt, ...) \
|
|
|
+# define LOG_FX(facility, level, lname, prefix, funcname, fmt, ...) \
|
|
|
do { \
|
|
|
if (DPRINT_NON_CRIT \
|
|
|
&& get_debug_level(LOG_MNAME, LOG_MNAME_LEN) >= (level)) { \
|
|
@@ -241,40 +248,48 @@ void log_prefix_init(void);
|
|
|
DPRINT_CRIT_ENTER; \
|
|
|
if (unlikely(log_stderr)) { \
|
|
|
if (unlikely(log_color)) dprint_color(__llevel); \
|
|
|
- fprintf(stderr, "%2d(%d) %s: %.*s%s" _FUNC_FMT_ fmt, \
|
|
|
+ fprintf(stderr, "%2d(%d) %s: %.*s%s%s%s" fmt, \
|
|
|
process_no, my_pid(), \
|
|
|
(lname)?(lname):LOG_LEVEL2NAME(__llevel), \
|
|
|
LOGV_PREFIX_LEN, LOGV_PREFIX_STR, \
|
|
|
- (prefix), _FUNC_NAME_, __VA_ARGS__); \
|
|
|
+ (prefix), LOGV_FUNCNAME_STR(funcname), \
|
|
|
+ LOGV_FUNCSUFFIX_STR(funcname), __VA_ARGS__); \
|
|
|
if (unlikely(log_color)) dprint_color_reset(); \
|
|
|
} else { \
|
|
|
_km_log_func(LOG2SYSLOG_LEVEL(__llevel) | \
|
|
|
(((facility) != DEFAULT_FACILITY) ? \
|
|
|
(facility) : \
|
|
|
get_debug_facility(LOG_MNAME, LOG_MNAME_LEN)), \
|
|
|
- "%s: %.*s%s" _FUNC_FMT_ fmt, \
|
|
|
+ "%s: %.*s%s%s%s" fmt, \
|
|
|
(lname)?(lname):LOG_LEVEL2NAME(__llevel), \
|
|
|
LOGV_PREFIX_LEN, LOGV_PREFIX_STR, \
|
|
|
- (prefix), _FUNC_NAME_, __VA_ARGS__); \
|
|
|
+ (prefix), LOGV_FUNCNAME_STR(funcname), \
|
|
|
+ LOGV_FUNCSUFFIX_STR(funcname), __VA_ARGS__); \
|
|
|
} \
|
|
|
DPRINT_CRIT_EXIT; \
|
|
|
} \
|
|
|
} while(0)
|
|
|
|
|
|
-# define LOG_(facility, level, ...) \
|
|
|
- LOG__(facility, level, NULL, __VA_ARGS__, NULL)
|
|
|
+# define LOG_FL(facility, level, lname, prefix, ...) \
|
|
|
+ LOG_FX(facility, level, lname, prefix, _FUNC_NAME_, __VA_ARGS__, NULL)
|
|
|
+
|
|
|
+# define LOG_FN(facility, level, prefix, ...) \
|
|
|
+ LOG_FX(facility, level, NULL, prefix, NULL, __VA_ARGS__, NULL)
|
|
|
+
|
|
|
+# define LOG_FP(facility, level, prefix, ...) \
|
|
|
+ LOG_FL(facility, level, NULL, prefix, __VA_ARGS__, NULL)
|
|
|
|
|
|
-# define LOG(level, ...) \
|
|
|
- LOG_(DEFAULT_FACILITY, (level), LOC_INFO, __VA_ARGS__, NULL)
|
|
|
# define LOG_FC(facility, level, ...) \
|
|
|
- LOG_((facility), (level), LOC_INFO, __VA_ARGS__, NULL)
|
|
|
+ LOG_FP((facility), (level), LOC_INFO, __VA_ARGS__, NULL)
|
|
|
# define LOG_LN(level, lname, ...) \
|
|
|
- LOG__(DEFAULT_FACILITY, (level), (lname), LOC_INFO,\
|
|
|
+ LOG_FL(DEFAULT_FACILITY, (level), (lname), LOC_INFO, \
|
|
|
__VA_ARGS__, NULL)
|
|
|
+# define LOG(level, ...) \
|
|
|
+ LOG_FP(DEFAULT_FACILITY, (level), LOC_INFO, __VA_ARGS__, NULL)
|
|
|
|
|
|
|
|
|
# else /* ! __SUNPRO_C */
|
|
|
-# define LOG__(facility, level, lname, prefix, fmt, args...) \
|
|
|
+# define LOG_FX(facility, level, lname, prefix, funcname, fmt, args...) \
|
|
|
do { \
|
|
|
if (DPRINT_NON_CRIT \
|
|
|
&& get_debug_level(LOG_MNAME, LOG_MNAME_LEN) >= (level) ) { \
|
|
@@ -292,42 +307,50 @@ void log_prefix_init(void);
|
|
|
__kld.v_fname = __FILE__; \
|
|
|
__kld.v_fline = __LINE__; \
|
|
|
__kld.v_mname = LOG_MNAME; \
|
|
|
- __kld.v_func = _FUNC_NAME_; \
|
|
|
+ __kld.v_func = LOGV_FUNCNAME_STR(funcname); \
|
|
|
__kld.v_locinfo = prefix; \
|
|
|
_ksr_slog_func(&__kld, fmt, ## args); \
|
|
|
} else { /* classic logging */ \
|
|
|
if (unlikely(log_stderr)) { \
|
|
|
if (unlikely(log_color)) dprint_color(__llevel); \
|
|
|
- fprintf(stderr, "%2d(%d) %s: %.*s%s" _FUNC_FMT_ fmt, \
|
|
|
+ fprintf(stderr, "%2d(%d) %s: %.*s%s%s%s" fmt, \
|
|
|
process_no, my_pid(), \
|
|
|
(lname)?(lname):LOG_LEVEL2NAME(__llevel), \
|
|
|
LOGV_PREFIX_LEN, LOGV_PREFIX_STR, \
|
|
|
- (prefix), _FUNC_NAME_, ## args); \
|
|
|
+ (prefix), LOGV_FUNCNAME_STR(funcname), \
|
|
|
+ LOGV_FUNCSUFFIX_STR(funcname), ## args); \
|
|
|
if (unlikely(log_color)) dprint_color_reset(); \
|
|
|
} else { \
|
|
|
_km_log_func(LOG2SYSLOG_LEVEL(__llevel) | \
|
|
|
(((facility) != DEFAULT_FACILITY) ? \
|
|
|
(facility) : \
|
|
|
get_debug_facility(LOG_MNAME, LOG_MNAME_LEN)), \
|
|
|
- "%s: %.*s%s" _FUNC_FMT_ fmt, \
|
|
|
+ "%s: %.*s%s%s%s" fmt, \
|
|
|
(lname)?(lname):LOG_LEVEL2NAME(__llevel), \
|
|
|
LOGV_PREFIX_LEN, LOGV_PREFIX_STR, \
|
|
|
- (prefix), _FUNC_NAME_, ## args); \
|
|
|
+ (prefix), LOGV_FUNCNAME_STR(funcname), \
|
|
|
+ LOGV_FUNCSUFFIX_STR(funcname), ## args); \
|
|
|
} \
|
|
|
} \
|
|
|
DPRINT_CRIT_EXIT; \
|
|
|
} \
|
|
|
} while(0)
|
|
|
|
|
|
-# define LOG_(facility, level, prefix, fmt, args...) \
|
|
|
- LOG__(facility, level, NULL, prefix, fmt, ## args)
|
|
|
+# define LOG_FL(facility, level, lname, prefix, fmt, args...) \
|
|
|
+ LOG_FX(facility, level, lname, prefix, _FUNC_NAME_, fmt, ## args)
|
|
|
+
|
|
|
+# define LOG_FN(facility, level, prefix, fmt, args...) \
|
|
|
+ LOG_FX(facility, level, NULL, prefix, NULL, fmt, ## args)
|
|
|
+
|
|
|
+# define LOG_FP(facility, level, prefix, fmt, args...) \
|
|
|
+ LOG_FL(facility, level, NULL, prefix, fmt, ## args)
|
|
|
|
|
|
# define LOG(level, fmt, args...) \
|
|
|
- LOG_(DEFAULT_FACILITY, (level), LOC_INFO, fmt , ## args)
|
|
|
+ LOG_FP(DEFAULT_FACILITY, (level), LOC_INFO, fmt, ## args)
|
|
|
# define LOG_FC(facility, level, fmt, args...) \
|
|
|
- LOG_((facility), (level), LOC_INFO, fmt , ## args)
|
|
|
+ LOG_FP((facility), (level), LOC_INFO, fmt, ## args)
|
|
|
# define LOG_LN(level, lname, fmt, args...) \
|
|
|
- LOG__(DEFAULT_FACILITY, (level), (lname), LOC_INFO, fmt , ## args)
|
|
|
+ LOG_FL(DEFAULT_FACILITY, (level), (lname), LOC_INFO, fmt, ## args)
|
|
|
|
|
|
# endif /* __SUNPRO_C */
|
|
|
#endif /* NO_LOG */
|