---
name: "__pmSpecLocalPMDA"
section: "3"
platform: "linux"
package: "libpcp3-dev"
version: "3.9.10"
release: "Debian 8 (Jessie)"
platforms: ["linux"]
url: "https://new.carta.tech/__pmSpecLocalPMDA"
---

# \_\_pmSpecLocalPMDA(3)

process command-line argument for the table of DSO PMDAs

## NAME

**\_\_pmSpecLocalPMDA** - process command-line argument for the table of DSO PMDAs

## C SYNOPSIS

**#include \<pcp/pmapi.h\>**\
 **#include \<pcp/impl.h\>**

**char \*\_\_pmSpecLocalPMDA(const char \****spec***);**

**cc ... -lpcp**

## DESCRIPTION

PCP contexts of type **PM\_CONTEXT\_LOCAL** are used by clients that wish to fetch metrics directly from one or more PMDAs on the local host without involving [**pmcd**(1)](/pmcd/1.md).

**\_\_pmSpecLocalPMDA** provides a convenience wrapper to be used by applications that wish to use a command line argument (usually with **-K**) to control the DSO PMDAs that are available for a **PM\_CONTEXT\_LOCAL** context.

The *spec* argument specifies actions for one or more DSO PMDAs using up to four fields separated by commas (\`\`,''), namely:

- an opcode with one of the values

  - \-

  **add** (add a new entry), **del** (delete an existing entry) or **clear** (clear all entries from the table).

- \-

  the PMDA's domain number

- \-

  the path to the PMDA DSO (may be absolute or relative to the $PCP\_VAR\_DIR/pmdas directory and the DSO suffix is optional), and

- \-

  the name of the PMDA's initialization routine.

All fields are required to add a new entry.  To delete an entry the opcode is required plus either or both of the domain number and path fields. To clear all entries, only the opcode is required.

If *spec* is parsed successfully, then [**\_\_pmLocalPMDA**(3)](/__pmLocalPMDA/3.md) is called with the extracted arguments.

## RETURN VALUE

On success, **\_\_pmSpecLocalPMDA** will return NULL.

On error or failure, **\_\_pmSpecLocalPMDA** will return a pointer to a static error message.

## EXAMPLES

Some examples of valid *spec* strings:

- `clear`

  Delete all entries from the DSO table.

- `add,123,foo/foo_pmda,foo_init`

  Add the \`\`foo'' PMDA using domain 123. The PMDA's DSO is most likely in below the directory **$PCP\_PMDAS\_DIR** and named *foo/foo\_pmda.so* (for ELF-style platforms) or *foo/foo\_pmda.dylib* (for BSD-style platforms) or *foo\\foo\_pmda.dll* (for Windows-style platforms). The initialization routine for the \`\`foo'' PMDA is *foo\_init*().

- `del,123`

  `Delete the entry for the DSO with domain 123.`

- `del,,foo/foo_pmda`

  `Delete the entry with a pathname to the DSO that matches` *foo/foo\_pmda*.

- `del,123,foo/foo_pmda`

  `Delete the entry for the DSO with either domain 123` `and/or a pathname to the DSO that matches` *foo/foo\_pmda*.

## SEE ALSO

[**PMAPI**(3)](/PMAPI/3.md), [**\_\_pmLocalPMDA**(3)](/__pmLocalPMDA/3.md) `and` [**pmNewContext**(3)](/pmNewContext/3.md).
