PMDADSO(3)
π PMDADSO(3) β the pmdaDSO era π
okay bestie, welcome to the PMDADSO page from the Library Functions Manual β¨ this is where your little Performance Co-Pilot agent gets told "you're gonna live inside a DSO now, babe" π¦
πΈ NAME πΈ
pmdaDSO β get your PMDA all set up to run as a DSO, no cap π
β¨ C SYNOPSIS β¨
#include <pcp/pmapi.h>
#include <pcp/pmda.h>
int pmdaDSO(pmdaInterface *dispatch, int interface, char *name,
char *helptext);
cc ... -lpcp_pmda -lpcp
π DESCRIPTION π
So pmdaDSO initializes the pmdaInterface structure to use the interface extensions, assuming the PMDA(3) is gonna be run as a DSO. it's giving "getting ready for the group chat" energy fr fr π«Ά
The pmdaInterface structure gets initialized with these:
nameβ the name of the agent. that's it, that's the vibe πhelptextβ the default path to the help text (peeppmdaText(3)π). If no help text is installed, or you're simply not usingpmdaText(3), then set this toNULL. Otherwise the helptext gets copied, which means the storage associated withhelptextmay be released after the call topmdaDSO. so like, you don't have to keep it alive, bestie π
The callbacks get initialized to pmdaProfile(3), pmdaFetch(3), pmdaDesc(3), pmdaText(3), pmdaInstance(3) and pmdaStore(3). all of them. the whole squad β¨
The interface structure also contains the domain of the PMDA(3), which is defined in the pmcd(1) configuration file. That domain is what initializes the metric and instance descriptors (see pmdaInit(3)) π
π¨ CAVEAT π¨
okay this part is important, listen up π’
The PMDA must be using PMDA_INTERFACE_2 or later. periodt.
Once pmdaDSO has been called, it is expected that the pmdaInterface structure pointed to by dispatch will remain accessible to the routines in libpcp_pmda. Translation: not reclaimed off the stack, not freed, not otherwise released, etc. π If the caller needs to move or relocate the pmdaInterface structure for any reason, then after the move pmdaInterfaceMoved(3) must be called to re-establish the internal integrity of the pmdaInterface structure at the new location β and that has to happen before any other routine in libpcp_pmda is called. no skipping steps, iykyk π
π DIAGNOSTICS π
- Incompatible version of pmcd detected β when
pmcd(1)creates thepmdaInterfacestructure, thedispatch.comm.versionfield is set to the highest protocol thatpmcd(1)understands. This message means thepmcd(1)process does not understand the protocol used bypmdaDSO. awkward π - Unable to allocate memory for pmdaExt structure β and on top of that,
dispatch->statusis set to a value less than zero. so, negative. not great π₯
π SEE ALSO π
pmcd(1), PMAPI(3), PMDA(3), pmdaDaemon(3), pmdaInit(3), pmdaInterfaceMoved(3) and pmdaText(3) π§
and that's the whole page, bestie β go forth and DSO responsibly π
this one's from Performance Co-Pilot, under the PCP banner, and it's the PMDADSO(3) page, dated right there in the footer π mwah, bye! πβ¨
π¦ where this page comes from
- arch rolling: pcp 7.2.2-2 Β· GPL-2.0-or-later AND LGPL-2.1-or-later AND CC-BY-3.0
- centos-stream 10: pcp-doc 7.1.5-6.el10 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 43: pcp-doc 7.0.1-1.fc43 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 43: pcp-doc 7.2.1-1.fc43
- fedora 43: pcp-doc 7.2.2-1.fc43
- fedora 43: pcp-doc 7.2.2-2.fc43 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 44: pcp-doc 7.1.0-6.fc44 Β· GPL-2.0-or-later AND CC-BY-3.0
- fedora 44: pcp-doc 7.2.1-1.fc44
- fedora 44: pcp-doc 7.2.2-1.fc44
- fedora 44: pcp-doc 7.2.2-2.fc44 Β· GPL-2.0-or-later AND CC-BY-3.0
- ubuntu resolute: libpcp-pmda3-dev 7.1.1-1
- ubuntu stonking: libpcp-pmda3-dev 7.2.1-2build1
- Copyright (c) 2000-2004 Silicon Graphics, Inc. All Rights Reserved
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms