Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Dec 2019 04:52:20 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r355412 - head/sys/geom
Message-ID:  <201912050452.xB54qKV0080126@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Thu Dec  5 04:52:19 2019
New Revision: 355412
URL: https://svnweb.freebsd.org/changeset/base/355412

Log:
  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.

Modified:
  head/sys/geom/geom.h
  head/sys/geom/geom_dump.c

Modified: head/sys/geom/geom.h
==============================================================================
--- head/sys/geom/geom.h	Thu Dec  5 04:18:22 2019	(r355411)
+++ head/sys/geom/geom.h	Thu Dec  5 04:52:19 2019	(r355412)
@@ -255,11 +255,15 @@ void g_dev_physpath_changed(void);
 struct g_provider *g_dev_getprovider(struct cdev *dev);
 
 /* 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_BIO		2
 #	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 */
 typedef void g_event_t(void *, int flag);

Modified: head/sys/geom/geom_dump.c
==============================================================================
--- head/sys/geom/geom_dump.c	Thu Dec  5 04:18:22 2019	(r355411)
+++ head/sys/geom/geom_dump.c	Thu Dec  5 04:52:19 2019	(r355412)
@@ -319,7 +319,7 @@ g_confxml(void *p, int flag)
 }
 
 void
-g_trace(int level, const char *fmt, ...)
+(g_trace)(int level, const char *fmt, ...)
 {
 	va_list ap;
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912050452.xB54qKV0080126>