/* * Set the origin position and interval for PMAPI context fetching */ static int setup_origin(pmOptions *opts) { int sts = 0; curtime = origin = opts->origin; /* initial archive mode, position and delta */ if (opts->context == PM_CONTEXT_ARCHIVE) { if (opts->interval.tv_sec || opts->interval.tv_usec) interval = opts->interval; setup_step_mode(); if ((sts = pmSetMode(fetchmode, &curtime, fetchstep)) < 0) { pmprintf( "%s: pmSetMode failure: %s\n", pmProgname, pmErrStr(sts)); opts->flags |= PM_OPTFLAG_RUNTIME_ERR; opts->errors++; } } return sts; }
void setup_globals(pmOptions *opts) { pmID pmids[HOST_NMETRICS]; pmDesc descs[HOST_NMETRICS]; pmResult *result; setup_context(opts); setup_metrics(hostmetrics, &pmids[0], &descs[0], HOST_NMETRICS); fetch_metrics("host", HOST_NMETRICS, pmids, &result); if (HOST_NMETRICS != result->numpmid) { fprintf(stderr, "%s: pmFetch failed to fetch initial metric value(s)\n", pmProgname); cleanstop(1); } if ((hertz = extract_integer(result, descs, HOST_HERTZ)) <= 0) hertz = sysconf(_SC_CLK_TCK); if ((pagesize = extract_integer(result, descs, HOST_PAGESIZE)) <= 0) pagesize = getpagesize(); extract_string(result, descs, HOST_RELEASE, sysname.release, sizeof(sysname.release)); extract_string(result, descs, HOST_VERSION, sysname.version, sizeof(sysname.version)); extract_string(result, descs, HOST_MACHINE, sysname.machine, sizeof(sysname.machine)); extract_string(result, descs, HOST_NODENAME, sysname.nodename, sizeof(sysname.nodename)); nodenamelen = strlen(sysname.nodename); pmFreeResult(result); setup_step_mode(opts, 0); }