/* * wrapper for pmdaFetch ... force value caches to be reloaded if needed, * then do the fetch */ static int openbsd_fetch(int numpmid, pmID pmidlist[], pmResult **resp, pmdaExt *pmda) { int i; int done_disk = 0; int done_percpu = 0; int done_netif = 0; int done_filesys = 0; int done_swap = 0; int done_vm_uvmexp = 0; for (i = 0; i < maplen; i++) { map[i].m_fetched = 0; } /* * pre-fetch all metrics if needed, and update instance domains if * they have changed */ for (i = 0; i < numpmid; i++) { if (pmid_cluster(pmidlist[i]) == CL_DISK) { if (!done_disk) { refresh_disk_metrics(); done_disk = 1; } } else if (pmid_cluster(pmidlist[i]) == CL_CPUTIME) { if (!done_percpu) { refresh_percpu_metrics(); done_percpu = 1; } } else if (pmid_cluster(pmidlist[i]) == CL_NETIF) { if (!done_netif) { refresh_netif_metrics(); done_netif = 1; } } else if (pmid_cluster(pmidlist[i]) == CL_FILESYS) { if (!done_filesys) { refresh_filesys_metrics(); done_netif = 1; } } else if (pmid_cluster(pmidlist[i]) == CL_SWAP) { if (!done_swap) { refresh_swap_metrics(); done_swap = 1; } } else if (pmid_cluster(pmidlist[i]) == CL_VM_UVMEXP) { if (!done_vm_uvmexp) { refresh_vm_uvmexp_metrics(); done_vm_uvmexp = 1; } } } return pmdaFetch(numpmid, pmidlist, resp, pmda); }
/* * wrapper for pmdaFetch ... force value caches to be reloaded if needed, * then do the fetch */ static int freebsd_fetch(int numpmid, pmID pmidlist[], pmResult **resp, pmdaExt *pmda) { int i; int done_disk = 0; int done_netif = 0; for (i = 0; i < maplen; i++) { map[i].m_fetched = 0; } /* * pre-fetch all metrics if needed, and update instance domains if * they have changed */ for (i = 0; !done_disk && !done_netif && i < numpmid; i++) { if (pmid_cluster(pmidlist[i]) == CL_DISK) { refresh_disk_metrics(); done_disk = 1; } else if (pmid_cluster(pmidlist[i]) == CL_NETIF) { refresh_netif_metrics(); done_netif = 1; } } return pmdaFetch(numpmid, pmidlist, resp, pmda); }
/* * wrapper for pmdaInstance ... refresh required instance domain first */ static int freebsd_instance(pmInDom indom, int inst, char *name, __pmInResult **result, pmdaExt *pmda) { /* * indomtab[] instance names and ids are not used for some indoms, * ensure pmdaCache is current */ if (indom == indomtab[DISK_INDOM].it_indom) refresh_disk_metrics(); if (indom == indomtab[NETIF_INDOM].it_indom) refresh_netif_metrics(); return pmdaInstance(indom, inst, name, result, pmda); }