pmdagetoptions(3) — Linux manual page

NAME | C SYNOPSIS | DESCRIPTION | CAVEAT | DIAGNOSTICS | SEE ALSO | COLOPHON

PMDAGETOPTIONS(3)        Library Functions Manual       PMDAGETOPTIONS(3)

NAME         top

       pmdaGetOpt, pmdaGetOptions - get options from arguments, parsing
       generic PMDA options

C SYNOPSIS         top

       #include <pcp/pmapi.h>
       #include <pcp/pmda.h>

       int pmdaGetOptions(int argc, char *const *argv, pmdaOptions *opts,
               pmdaInterface *dispatch);

       int pmdaGetOpt(int argc, char *const *argv, const char *optstring,
               pmdaInterface *dispatch, int *err);

       cc ... -lpcp_pmda -lpcp

DESCRIPTION         top

       These  functions  are wrappers for pmgetopt_r(3).  The behavior of
       each function is that certain options are assumed to have a prede‐
       fined behavior which initializes several fields in the  pmdaInter‐
       face  structure.   The  pmdaGetOptions interface allows both short
       and long options to be given, whereas pmdaGetOpt allows for  short
       form options only.

       The options that both pmdaGetOptions and pmdaGetOpt will trap are:

       -Ddebugspec
              Set the PMAPI(3) debugging options to debugspec, as de‐
              scribed in PCPIntro(1).  Used for controlling levels of
              trace output while debugging.

       -ddomain
              Set the domain number of this agent.

       -hhelpfile
              Obtain the help text (see pmdaText(3)) for the metrics from
              this file rather than from the path specified with
              pmdaDSO(3) or pmdaDaemon(3).

       -iport Expect PMCD to connect on inet port (number or name).

       -6port Expect PMCD to connect on ipv6 port (number or name).

       -llogfile
              Redirect diagnostics and trace output to logfile.

       -p     Expect PMCD to supply stdin/stdout pipe.

       -usocket
              Expect PMCD to connect on unix domain socket.

       The pmdaGetOptions interface will also capture the following op‐
       tions, and store them within the opts parameter:

       -Uusername
              Set the user account name under which the PMDA should exe‐
              cute.

       Only one of -i, -6, -p and -u may be specified.  If none of these
       three options is given, a pipe (-p) is assumed.  When these op‐
       tions are encountered by pmdaGetOpt, the option is processed and
       the next option is examined.  Therefore, pmdaGetOpt will only re‐
       turn when an option other than those listed above is found, or the
       end of the list is reached.  The returned value will be the argu‐
       ment or EOF, respectively.

       A PMDA can control which of these options the program will accept
       with either the opts or optstring argument.  To accept all the op‐
       tions, the PMDA should call pmdaGetOptions with the short_options
       field of the opts structure set to the PMDA_OPTIONS macro, or
       pmdaGetOpt with the option string "D:d:h:i:l:pu:".  Any PMDA spe‐
       cific options should be added to these strings in the style of
       getopt(3), and will be returned by both pmdaGetOptions and pmdaGe‐
       tOpt if encountered.

       When a command line option usage error is detected in the pmdaGe‐
       tOptions interface, the error field of the opts structure will
       contain a non-zero error count.

       pmdaGetOpt takes a pointer to an int, err, which is used as an er‐
       ror count.  This variable should be initialized to zero before
       pmdaGetOpt is first called, and tested when pmdaGetOpt returns
       EOF.

       Neither pmdaGetOptions nor pmdaGetOpt modify their argc or argv
       parameters.

       The global variables used by the system getopt(3) interface may
       also be used by the caller of pmdaGetOpt within the argument pars‐
       ing loop.

       On the other hand, the pmdaGetOptions interface does not utilize
       global variables at all (neither reading nor modifying them).  In‐
       stead, these variables can be access via the opts fields of the
       same name.

CAVEAT         top

       The options -D, -d, -i, -l, -p and -u cannot be reused for other
       purposes by the PMDA, unless using the override method provided by
       the pmdaGetOptions interface, which operates in the same way as
       described for the pmGetOptions(3) interface used by PMAPI client
       tools.

       The PMDA must be using PMDA_INTERFACE_2 or later, as specified in
       the call to pmdaDSO(3) or pmdaDaemon(3).

DIAGNOSTICS         top

       Both pmdaGetOptions and pmdaGetOpt will display the same error
       messages as getopt.

SEE ALSO         top

       pmdbg(1), getopt(3), pmgetopt_r(3), pmGetOptions(3), PMAPI(3),
       PMDA(3), pmdaDaemon(3), pmdaDSO(3) and pmdaText(3).

COLOPHON         top

       This page is part of the PCP (Performance Co-Pilot) project.  In‐
       formation about the project can be found at ⟨http://www.pcp.io/⟩.
       If you have a bug report for this manual page, send it to
       pcp@groups.io.  This page was obtained from the project's upstream
       Git repository ⟨https://github.com/performancecopilot/pcp.git⟩ on
       2025-02-02.  (At that time, the date of the most recent commit
       that was found in the repository was 2025-01-30.)  If you discover
       any rendering problems in this HTML version of the page, or you
       believe there is a better or more up-to-date source for the page,
       or you have corrections or improvements to the information in this
       COLOPHON (which is not part of the original manual page), send a
       mail to man-pages@man7.org

Performance Co-Pilot               PCP                  PMDAGETOPTIONS(3)

Pages that refer to this page: pmda(3)pmdaconnect(3)pmdadaemon(3)pmdainit(3)pmdaopenlog(3)pmdatext(3)