pmc_read(3)

pmc_read3

Read and write hardware performance counters

Usage

#include <pmc.h>

int

pmc_read(pmc_id_t pmc, pmc_value_t *value);

int

pmc_rw(pmc_id_t pmc, pmc_value_t newvalue, pmc_value_t *oldvaluep);

int

pmc_write(pmc_id_t pmc, pmc_value_t value);

Library

library “libpmc”

Overview

These functions read and write the current value of a PMC.

Function pmc_read() will read the current value of the PMC specified by argument pmc and write it to the location specified by argument value.

Function pmc_write() will set the current value of the PMC specified by argument pmc to the value specified by argument value.

Function pmc_rw() combines a read and a write into a single atomic operation.

For write operations the PMC should be a quiescent state.

Return values

The pmc_read() function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

Errors

A call to these functions may fail with the following errors:

[EBUSY]

A write operation specified a currently running PMC.

[EINVAL]

Argument pmc specified a PMC not in a readable state.

[EINVAL]

The PMC specified by argument pmc was not owned by the current process.

Releases

49 releases since FreeBSD 6.0-RELEASE; the text changed 33 times.

  1. 6.0
  2. 6.1–6.3
  3. 6.4
  4. 7.0
  5. 7.1
  6. 7.2
  7. 7.3
  8. 7.4
  9. 8.0
  10. 8.1
  11. 8.2
  12. 8.3
  13. 8.4
  14. 9.0
  15. 9.1
  16. 9.2
  17. 9.3
  18. 10.0
  19. 10.1
  20. 10.2
  21. 10.3
  22. 10.4
  23. 11.0
  24. 11.1
  25. 11.2
  26. 11.3
  27. 11.4
  28. 12.0
  29. 12.1
  30. 12.2
  31. 12.3
  32. 12.4
  33. 13.0–13.2
  34. 13.3–16.0

From base 16.0-CURRENT-20261027-61c70dc16a79 in FreeBSD 16.0-CURRENT (2026-10-27). Parsed by carta from the page's mdoc source.