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

# pmSemStr(3)

convert a performance metric semantic into a string

## NAME

**pmSemStr**, **pmSemStr\_r** - convert a performance metric semantic into a string

## C SYNOPSIS

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

**const char \*pmSemStr(int** *sem***);**\
 **char \*pmSemStr\_r(int** *sem***, char \****buf***, int** *buflen***);**

**cc ... -lpcp**

## DESCRIPTION

Given a performance metric *semantic*, **pmSemStr** produces a terse ASCII equivalent, appropriate for use in error and diagnostic messages. The **pmSemStr\_r** function does the same, but stores the result in a user-supplied buffer *buf* of length *buflen*, which should have room for at least 20 bytes.

The value for *sem* is typically extracted from a *pmDesc* structure, following a call to [**pmLookupDesc**(3)](/pmLookupDesc/3.md) for a particular performance metric.

Examples are **counter** (for *sem* equals **PM\_SEM\_COUNTER**), **discrete** (for *sem* equals **PM\_SEM\_DISCRETE**), **instant** (for *sem* equals **PM\_SEM\_INSTANT**), etc.

## NOTES

Both of these routines are safe to call from threaded applications.

## SEE ALSO

[**PMAPI**(3)](/PMAPI/3.md), [**pmAtomStr**(3)](/pmAtomStr/3.md), [**pmConvScale**(3)](/pmConvScale/3.md), [**pmExtractValue**(3)](/pmExtractValue/3.md), [**pmLookupDesc**(3)](/pmLookupDesc/3.md), [**pmPrintValue**(3)](/pmPrintValue/3.md), [**pmIDStr**(3)](/pmIDStr/3.md), [**pmInDomStr**(3)](/pmInDomStr/3.md), [**pmTypeStr**(3)](/pmTypeStr/3.md) and [**pmUnitsStr**(3)](/pmUnitsStr/3.md).
