diff -r c051f521e0be sys/sys/pcpu.h --- a/sys/sys/pcpu.h Mon Jun 07 22:43:37 2010 +0000 +++ b/sys/sys/pcpu.h Thu Jun 10 13:35:01 2010 +1000 @@ -106,6 +106,17 @@ #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; \ + for (u_int i = mp_maxid; i >= 0; i--) \ + if (!CPU_ABSENT(i)) \ + (sum) += (DPCPU_ID_PTR(i, n))->var; \ +} while (0) + /* * XXXUPS remove as soon as we have per cpu variable * linker sets and can define rm_queue in _rm_lock.h