Beispiel #1
0
/*
 * Initialize a module for the file system processing stack.
 */
void
pflfs_module_init(struct pscfs *m)
{
	m->pf_opst_read_err = pfl_opstat_initf(OPSTF_BASE10,
	    "fs.%s.read.err", m->pf_name);
	m->pf_opst_write_err = pfl_opstat_initf(OPSTF_BASE10,
	    "fs.%s.write.err", m->pf_name);
	m->pf_opst_read_reply =
	    pfl_opstat_init("fs.%s.read.reply", m->pf_name);
	m->pf_opst_write_reply =
	    pfl_opstat_init("fs.%s.write.reply", m->pf_name);
}
Beispiel #2
0
/*
 * Register a list cache for external access.
 * @plc: the list cache to register.
 * @name: printf(3) format of name for list.
 * @ap: variable argument list for printf(3) name argument.
 */
void
lc_vregister(struct psc_listcache *plc, const char *name, va_list ap)
{
	int rc;

	PLL_LOCK(&psc_listcaches);
	LIST_CACHE_LOCK(plc);

	rc = vsnprintf(plc->plc_name, sizeof(plc->plc_name), name, ap);
	if (rc == -1)
		psc_fatal("vsnprintf");
	if (rc > (int)sizeof(plc->plc_name))
		psc_fatalx("plc_name is too large (%s)", name);

	plc->plc_nseen = pfl_opstat_initf(OPSTF_BASE10,
	    "listcache.%s.adds", plc->plc_name);
	plc->plc_st_removes = pfl_opstat_initf(OPSTF_BASE10,
	    "listcache.%s.removes", plc->plc_name);
	pll_add_sorted(&psc_listcaches, plc, lc_cmp);

	LIST_CACHE_ULOCK(plc);
	PLL_ULOCK(&psc_listcaches);
}
Beispiel #3
0
void
pfl_opstats_grad_init(struct pfl_opstats_grad *og, int flags,
    int64_t *buckets, int nbuckets, const char *fmt, ...)
{
	const char *lower_suffix = "", *upper_suffix = "";
	int64_t lower_bound, upper_bound;
	struct pfl_opstat_bucket *ob;
	char label[16];
	int rc, i;

	og->og_buckets = PSCALLOC(nbuckets * sizeof(og->og_buckets[0]));
	og->og_nbuckets = nbuckets;

	for (i = 0, ob = og->og_buckets; i < nbuckets; i++, ob++) {
		if (i)
			pfl_assert(buckets[i - 1] < buckets[i]);
		else
			pfl_assert(buckets[i] == 0);

		lower_bound = buckets[i];
		if (!(flags & OPSTF_BASE10))
			lower_suffix = _pfl_opstats_base2_suffix(
			    &lower_bound);

		if (i == nbuckets - 1) {
			rc = snprintf(label, sizeof(label),
			    "%d:>=%"PRId64"%.1s", i, lower_bound,
			    lower_suffix);
		} else {
			upper_bound = buckets[i + 1];
			if (!(flags & OPSTF_BASE10))
				upper_suffix =
				    _pfl_opstats_base2_suffix(
					&upper_bound);

			rc = snprintf(label, sizeof(label),
			    "%d:%"PRId64"%.1s-<%"PRId64"%.1s", i,
			    lower_bound, lower_suffix,
			    upper_bound, upper_suffix);
		}
		if (rc == -1)
			psc_fatal("snprintf");
		ob->ob_lower_bound = buckets[i];
		ob->ob_opst = pfl_opstat_initf(flags | OPSTF_BASE10,
		    fmt, label);
	}
}