Wrap g_trace() into a macro to avoid unneeded calls.
In most cases with debug disabled this function does nothing, but argument passing and the call still cost measurable time due to cache misses, etc. MFC after: 2 weeks Sponsored by: iXsystems, Inc.
This commit is contained in:
parent
fcfe2d6633
commit
2efaef42e4
@ -255,11 +255,15 @@ void g_dev_physpath_changed(void);
|
|||||||
struct g_provider *g_dev_getprovider(struct cdev *dev);
|
struct g_provider *g_dev_getprovider(struct cdev *dev);
|
||||||
|
|
||||||
/* geom_dump.c */
|
/* geom_dump.c */
|
||||||
void g_trace(int level, const char *, ...);
|
void (g_trace)(int level, const char *, ...) __printflike(2, 3);
|
||||||
# define G_T_TOPOLOGY 1
|
# define G_T_TOPOLOGY 1
|
||||||
# define G_T_BIO 2
|
# define G_T_BIO 2
|
||||||
# define G_T_ACCESS 4
|
# define G_T_ACCESS 4
|
||||||
|
extern int g_debugflags;
|
||||||
|
#define g_trace(level, fmt, ...) do { \
|
||||||
|
if (__predict_false(g_debugflags & (level))) \
|
||||||
|
(g_trace)(level, fmt, ## __VA_ARGS__); \
|
||||||
|
} while (0)
|
||||||
|
|
||||||
/* geom_event.c */
|
/* geom_event.c */
|
||||||
typedef void g_event_t(void *, int flag);
|
typedef void g_event_t(void *, int flag);
|
||||||
|
@ -319,7 +319,7 @@ g_confxml(void *p, int flag)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
g_trace(int level, const char *fmt, ...)
|
(g_trace)(int level, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user