pmc_disable(3)

pmc_disable3

Administrative control of hardware performance counters

Part of pmc_enable(3).

Usage

#include <pmc.h>

int

pmc_disable(int cpu, int pmc);

int

pmc_enable(int cpu, int pmc);

Library

library “libpmc”

Overview

These functions allow specific hardware performance monitoring counters in a system to be disabled and enabled administratively. The hardware performance counters available on each CPU are numbered using small non-negative integers, in a system dependent manner. Disabled counters will not be available to applications for use.

The invoking process needs to have the PRIV_PMC_MANAGE privilege to perform these operations.

Function pmc_disable() disables the hardware counter numbered by argument pmc on CPU number cpu.

Function pmc_enable() enables the hardware counter numbered by argument pmc on CPU number cpu.

Implementation notes

Hardware PMCs that are currently in use by applications cannot be disabled. Allocation of a process scope software PMC marks all hardware PMCs in the system with the same pmc number as being in-use.

Return values

The pmc_disable() 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]

Function pmc_disable() specified a hardware PMC is currently in use.

[EINVAL]

Arguments cpu or pmc were invalid.

[ENXIO]

Argument cpu specified a disabled or absent CPU.

[EPERM]

The current process lacks sufficient privilege to perform this operation.

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.