On 06/13/10 20:10, Pawel Jakub Dawidek wrote:
On Sun, Jun 13, 2010 at 02:39:55AM +0000, Lawrence Stewart wrote:
Author: lstewart
Date: Sun Jun 13 02:39:55 2010
New Revision: 209119
URL: http://svn.freebsd.org/changeset/base/209119

Log:
   Add a utility macro to simplify calculating an aggregate sum from a DPCPU
   counter variable.

   Sponsored by:        FreeBSD Foundation
   Reviewed by: jhb, rpaulo, rwatson (previous version of patch)
   MFC after:   1 week

Modified:
   head/sys/sys/pcpu.h

Modified: head/sys/sys/pcpu.h
==============================================================================
--- head/sys/sys/pcpu.h Sun Jun 13 01:27:29 2010        (r209118)
+++ head/sys/sys/pcpu.h Sun Jun 13 02:39:55 2010        (r209119)
@@ -106,6 +106,17 @@ extern uintptr_t dpcpu_off[];
  #define       DPCPU_ID_GET(i, n)      (*DPCPU_ID_PTR(i, n))
  #define       DPCPU_ID_SET(i, n, v)   (*DPCPU_ID_PTR(i, n) = v)

+/*
+ * Utility macros.
+ */
+#define DPCPU_SUM(n, var, sum)                                         \
+do {                                                                   \
+       (sum) = 0;                                                      \
+       u_int i;                                                        \
+       CPU_FOREACH(i)                                                  \
+               (sum) += (DPCPU_ID_PTR(i, n))->var;                  \
+} while (0)

I'd suggest first swapping variable declaration and '(sum) = 0;'.

Can do (will wait until consensus on other issues is reached first before tweaking though).

Also using 'i' as a counter in macro can easly lead to name collision.

I had a similar concern but after chatting with John on IRC felt it wasn't such a big deal in this case.

If you need to do it, I'd suggest '_i' or something.

Could do... is it worth it?

Maybe it would be better to make it an inline function rather than macro?

Inlining it could be annoying with respect to the types used in the function prototype, no? I suspect it would be more useful keeping it as a macro if possible.

Cheers,
Lawrence
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to