---
name: "pmStore"
section: "3"
platform: "linux"
package: "pcp"
version: "7.2.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/pmStore"
---

# pmStore(3)

modify values of performance metrics

## NAME

**pmStore** - modify values of performance metrics

## C SYNOPSIS

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

**int pmStore(const pmResult \****result***);**

**cc ... -lpcp**

## DESCRIPTION

In some special cases it may be helpful to modify the current values of performance metrics, e.g. to reset a counter to zero, or to modify a \`\`metric'' which is a control variable for some agent collecting performance metrics.

**pmStore** is a lightweight inverses of [**pmFetch**(3)](/pmFetch/3.md).

The caller must build the *result* data structure (of course, this could have been returned from an earlier [**pmFetch**(3)](/pmFetch/3.md) call).

It is an error to pass a *result* to **pmStore** in which the *numval* field within any of the **pmValueSet** structures has a value less than one.

The current Performance Metrics Application Programming Interface (PMAPI) context must be one with a host as the source of metrics, and the current value of the nominated metrics will be changed, i.e. **pmStore** cannot be used to make retrospective changes to information in either the archives, or in the recent past for real-time sources of metrics.

The return code from **pmStore** is zero for success.

## DIAGNOSTICS

- **PM\_ERR\_GENERIC**

  At least one of the modifications was rejected. No other status is available from below the PMAPI (this is the lightweight part of the functionality!). In cases where the outcome of storing into individual metrics is important, the caller should make one call to either **pmStore** for each metric. On the other hand, a bulk modification can be performed in a single call for situations in which the outcome is not critical.

- **PM\_ERR\_NOTHOST**

  The current PMAPI context is an archive rather than a host, or it is a host that is not set to the current time, i.e. has been \`\`rewound'' to the recent past using [**pmSetMode**(3)](/pmSetMode/3.md).

- **PM\_ERR\_TOOSMALL**

  The number of metrics specified in *result* is less than one.

- **PM\_ERR\_VALUE**

  One or more of the *pmValueSet*s in *result* has a *numval* field with a value less than one.

## COMPATIBILITY

Prior to PCP 7.0 the *timestamp* field in the `pmResult` struct was a `struct timeval`. To support PMAPI transition, the old interface and semantics can be used if applications are recompiled with **-DPMAPI\_VERSION=2**.

For a time in PCP 6.x there was a routine with the same semantics as the current **pmStore** called **pmStoreHighRes**, and a struct with the same definition as the current `pmResult` struct called `pmResultHighRes`, although both are now deprecated and compile-time support for **pmStoreHighRes** and `pmResultHighRes` will be removed in a future release.

## SEE ALSO

[**PMAPI**(3)](/PMAPI/3.md), [**pmFetch**(3)](/pmFetch/3.md), and [**pmSetMode**(3)](/pmSetMode/3.md).
