/* organize fetch bundling for given expression */ static void bundle(Task *t, Expr *x) { Metric *m; Host *h; int i; if (x->op == CND_FETCH) { m = x->metrics; for (i = 0; i < x->hdom; i++) { h = findHost(t, m); m->host = h; if (m->conv) /* initialized Metric */ bundleMetric(h, m); else /* uninitialized Metric */ waitMetric(m); m++; } #if PCP_DEBUG if (pmDebug & DBG_TRACE_APPL1) { fprintf(stderr, "bundle: task " PRINTF_P_PFX "%p nth=%d prev=" PRINTF_P_PFX "%p next=" PRINTF_P_PFX "%p delta=%.3f nrules=%d\n", t, t->nth, t->prev, t->next, t->delta, t->nrules+1); __dumpExpr(1, x); m = x->metrics; for (i = 0; i < x->hdom; i++) { __dumpMetric(2, m); m++; } } #endif } else { if (x->arg1) { bundle(t, x->arg1); if (x->arg2) bundle(t, x->arg2); } } }
void dumpMetric(Metric *m) { __dumpMetric(0, m); }