PMDISCOVERSERVICES(3) | Library Functions Manual | PMDISCOVERSERVICES(3) |
pmDiscoverServices, __pmDiscoverServicesWithOptions - discover PCP services on the network
#include <pcp/pmapi.h>
int pmDiscoverServices(const char *service, const char *mechanism, char ***urls);
#include <pcp/libpcp.h>
int __pmDiscoverServicesWithOptions(const char *service, const char *mechanism, const char *optionsString, const volatile unsigned *flags, char ***urls);
cc ... -lpcp
This documentation is intended for internal Performance Co-Pilot (PCP) developer use.
These interfaces are not part of the PCP APIs that are guaranteed to remain fixed across releases, and they may not work, or may provide different semantics at some point in the future.
Given a PCP service name, as identified by service, and using the type of discovery optionally specified in mechanism, pmDiscoverServices returns, via urls, a list of URLs representing the services discovered on the network.
The internal function __pmDiscoverServicesWithOptions performs the same function and adds arguments for global options and a mechanism for interrupting the discovery process.
The pmfind(1) utility provides command line access to both of these interfaces.
Calling
pmDiscoverServices(service, mechanism, urls)
is equivalent to calling
__pmDiscoverServicesWithOptions(service, mechanism, NULL, NULL, urls);
service specifies the PCP service to be discovered. Currently supported services are PM_SERVER_SERVICE_SPEC and PM_PROXY_SERVICE_SPEC which search for pmcd(1), and pmproxy(1) servers respectively.
mechanism specifies the style of discovery to be used.
The currently supported mechanisms are:
mechanism may also be NULL, which means to use all available discovery mechanisms.
For __pmDiscoverServicesWithOptions, optionsString specifies global options to be applied to the discovery process. Options are comma-separated and may be one or more of the following:
optionsString may also be NULL, which means that no global options are specified.
For __pmDiscoverServicesWithOptions, flags specifies a pointer to an object of type unsigned which is a bit mask of options/status flags for the discovery process. The supported flags are:
flags may also be NULL, which indicates that no flags are set.
pmDiscoverServices and __pmDiscoverServicesWithOptions will return the number of services discovered, else a value less than zero for an error. The value zero indicates that no services were discovered.
The resulting list of pointers, urls, and the values (the URLs) that the pointers reference will have been allocated by pmDiscoverServices or __pmDiscoverServicesWithOptions with a single call to malloc(3), and it is the responsibility of the pmDiscoverServices or __pmDiscoverServicesWithOptions caller to free(urls) to release the space when it is no longer required.
When an error occurs, or no services are discovered, urls is undefined (no space will have been allocated, and so calling free(3) is a singularly bad idea).
Environment variables with the prefix PCP_ are used to parameterize the file and directory names used by PCP. On each installation, the file /etc/pcp.conf contains the local values for these variables. The $PCP_CONF variable may be used to specify an alternative configuration file, as described in pcp.conf(5). Values for these variables may be obtained programmatically using the pmGetConfig(3) function.
pmcd(1), pmfind(1), pmproxy(1), pcp-kube-pods(1), PMAPI(3), pmGetConfig(3), pcp.conf(5), pcp.env(5) and avahi-daemon(8).
PCP | Performance Co-Pilot |