summaryrefslogtreecommitdiffstats
path: root/share/man/man4/hwpmc.4
diff options
context:
space:
mode:
authorjkoshy <jkoshy@FreeBSD.org>2005-06-30 02:38:46 +0000
committerjkoshy <jkoshy@FreeBSD.org>2005-06-30 02:38:46 +0000
commit9b88b144a0ffd96c406a040d676ccc160ddec1c7 (patch)
treef0ada6aa8bc2b94f64944e0e60462af385f73ce2 /share/man/man4/hwpmc.4
parentda61891eff29940dff5ab77af86c202510dd2685 (diff)
downloadFreeBSD-src-9b88b144a0ffd96c406a040d676ccc160ddec1c7.zip
FreeBSD-src-9b88b144a0ffd96c406a040d676ccc160ddec1c7.tar.gz
Fix markup, correct typos, improve grammar, move the BUGS section to
the end of the manual page. Submitted by: ru Approved by: re (blanket hwpmc)
Diffstat (limited to 'share/man/man4/hwpmc.4')
-rw-r--r--share/man/man4/hwpmc.4288
1 files changed, 144 insertions, 144 deletions
diff --git a/share/man/man4/hwpmc.4 b/share/man/man4/hwpmc.4
index 17209f5..423620b 100644
--- a/share/man/man4/hwpmc.4
+++ b/share/man/man4/hwpmc.4
@@ -24,16 +24,15 @@
.\"
.\" $FreeBSD$
.\"
-.Dd Apr 15, 2005
+.Dd April 15, 2005
.Dt HWPMC 4
.Os
.Sh NAME
.Nm hwpmc
-.Nd Hardware performance monitoring counter support
+.Nd "Hardware Performance Monitoring Counter support"
.Sh SYNOPSIS
-.Cd options HWPMC_HOOKS
-.br
-.Cd device hwpmc
+.Cd "options HWPMC_HOOKS"
+.Cd "device hwpmc"
.Sh DESCRIPTION
The
.Nm
@@ -44,10 +43,10 @@ user level processes.
The driver supports multi-processor systems.
.Pp
PMCs are allocated using the
-.Ic PMC_OP_PMCALLOCATE
+.Dv PMC_OP_PMCALLOCATE
request.
A successful
-.Ic PMC_OP_PMCALLOCATE
+.Dv PMC_OP_PMCALLOCATE
request will return an integer handle (typically a small integer) to
the requesting process.
Subsequent operations on the allocated PMC use this handle to denote
@@ -57,12 +56,12 @@ A process that has successfully allocated a PMC is termed an
.Pp
PMCs may be allocated to operate in process-private or in system-wide
modes.
-.Bl -hang -width "XXXXXXXXXXXXXXX"
+.Bl -tag -width ".Em Process-private"
.It Em Process-private
In process-private mode, a PMC is active only when a thread belonging
to a process it is attached to is scheduled on a CPU.
.It Em System-wide
-In system-wide mode a PMC operates independently of processes and
+In system-wide mode, a PMC operates independently of processes and
measures hardware events for the system as a whole.
.El
.Pp
@@ -70,11 +69,10 @@ The
.Nm
driver supports the use of hardware PMCs for counting or for
sampling:
-.Bl -hang -width "XXXXXXXXX"
-.It Em Counting
+.Bl -tag -width ".Em Counting"
In counting modes, the PMCs count hardware events.
These counts are retrievable using the
-.Ic PMC_OP_PMCREAD
+.Dv PMC_OP_PMCREAD
system call on all architectures, though some architectures like the
x86 and amd64 offer faster methods of reading these counts.
.It Em Sampling
@@ -93,10 +91,10 @@ These PMCs count hardware events whenever a thread in their attached process is
scheduled on a CPU.
These PMCs normally count from zero, but the initial count may be
set using the
-.Ic PMC_OP_SETCOUNT
+.Dv PMC_OP_SETCOUNT
operation.
Applications can read the value of the PMC anytime using the
-.Ic PMC_OP_PMCRW
+.Dv PMC_OP_PMCRW
operation.
.It Process-private, sampling
These PMCs sample the target processes instruction pointer after they
@@ -104,30 +102,30 @@ have seen the configured number of hardware events.
The PMCs only count events when a thread belonging to their attached
process is active.
The desired frequency of sampling is set using the
-.Ic PMC_OP_SETCOUNT
+.Dv PMC_OP_SETCOUNT
operation prior to starting the PMC.
Log files are configured using the
-.Ic PMC_OP_CONFIGURELOG
+.Dv PMC_OP_CONFIGURELOG
operation.
.It System-wide, counting
These PMCs count hardware events seen by them independent of the
processes that are executing.
The current count on these PMCs can be read using the
-.Ic PMC_OP_PMCRW
+.Dv PMC_OP_PMCRW
request.
These PMCs normally count from zero, but the initial count may be
set using the
-.Ic PMC_OP_SETCOUNT
+.Dv PMC_OP_SETCOUNT
operation.
.It System-wide, sampling
These PMCs will periodically sample the instruction pointer of the CPU
they are allocated on, and will write the sample to a log for further
processing.
The desired frequency of sampling is set using the
-.Ic PMC_OP_SETCOUNT
+.Dv PMC_OP_SETCOUNT
operation prior to starting the PMC.
Log files are configured using the
-.Ic PMC_OP_CONFIGURELOG
+.Dv PMC_OP_CONFIGURELOG
operation.
.Pp
System-wide statistical sampling can only be enabled by a process with
@@ -144,9 +142,9 @@ of the
driver.
.Pp
Allocated PMCs are started using the
-.Ic PMC_OP_PMCSTART
+.Dv PMC_OP_PMCSTART
operation, and stopped using the
-.Ic PMC_OP_PMCSTOP
+.Dv PMC_OP_PMCSTOP
operation.
Stopping and starting a PMC is permitted at any time the owner process
has a valid handle to the PMC.
@@ -154,14 +152,14 @@ has a valid handle to the PMC.
Process-private PMCs need to be attached to a target process before
they can be used.
Attaching a process to a PMC is done using the
-.Ic PMC_OP_PMCATTACH
+.Dv PMC_OP_PMCATTACH
operation.
An already attached PMC may be detached from its target process
using the converse
-.Ic PMC_OP_PMCDETACH
+.Dv PMC_OP_PMCDETACH
operation.
-Issuing an
-.Ic PMC_OP_PMCSTART
+Issuing a
+.Dv PMC_OP_PMCSTART
operation on an as yet unattached PMC will cause it to be attached
to its owner process.
The following rules determine whether a given process may attach
@@ -177,16 +175,16 @@ be able to attach to for debugging (as determined by
.El
.Pp
PMCs are released using
-.Ic PMC_OP_PMCRELEASE .
+.Dv PMC_OP_PMCRELEASE .
After a successful
-.Ic PMC_OP_PMCRELEASE
+.Dv PMC_OP_PMCRELEASE
operation the handle to the PMC will become invalid.
-.Ss MODIFIER FLAGS
+.Ss Modifier Flags
The
-.Ic PMC_OP_PMCALLOCATE
+.Dv PMC_OP_PMCALLOCATE
operation supports the following flags that modify the behavior
of an allocated PMC:
-.Bl -tag -width indent -compact
+.Bl -tag -width indent
.It Dv PMC_F_DESCENDANTS
This modifier is valid only for a PMC being allocated in process-private
mode.
@@ -212,10 +210,11 @@ With this modifier present,
.Nm
will maintain per-process counts for each target process attached to
a PMC.
-At process exit time, a record containing the target process' pid and
+At process exit time, a record containing the target process' PID and
the accumulated per-process count for that process will be written to the
configured log file.
.El
+.Pp
Modifiers
.Dv PMC_F_LOG_PROCEXIT
and
@@ -228,17 +227,17 @@ PMCs with modifiers
and
.Dv PMC_F_LOG_PROCCSW
cannot be started until their owner process has configured a log file.
-.Ss SIGNALS
+.Ss Signals
The
.Nm
driver may deliver signals to processes that have allocated PMCs:
-.Bl -tag -width "XXXXXXXX" -compact
-.It Bq SIGIO
+.Bl -tag -width ".Dv SIGBUS"
+.It Dv SIGIO
A
-.Ic PMC_OP_PMCRW
+.Dv PMC_OP_PMCRW
operation was attempted on a process-private PMC that does not have
attached target processes.
-.It Bq SIGBUS
+.It Dv SIGBUS
The
.Nm
driver is being unloaded from the kernel.
@@ -247,8 +246,9 @@ driver is being unloaded from the kernel.
The recommended way for application programs to use the facilities of
the
.Nm
-driver is using the API provided by the library
-.Xr pmc 3 .
+driver is using the API provided by the
+.Xr pmc 3
+library.
.Pp
The
.Nm
@@ -259,36 +259,36 @@ The
.Nm
driver supports the following operations:
.Bl -tag -width indent
-.It Ic PMC_OP_CONFIGURELOG
+.It Dv PMC_OP_CONFIGURELOG
Configure a log file for sampling mode PMCs.
-.It Ic PMC_OP_FLUSHLOG
+.It Dv PMC_OP_FLUSHLOG
Transfer buffered log data inside
.Nm
to a configured output file.
This operation returns to the caller after the write operation
has returned.
-.It Ic PMC_OP_GETCPUINFO
+.It Dv PMC_OP_GETCPUINFO
Retrieve information about the number of CPUs on the system and
the number of hardware performance monitoring counters available per-CPU.
-.It Ic PMC_OP_GETDRIVERSTATS
+.It Dv PMC_OP_GETDRIVERSTATS
Retrieve module statistics (for analyzing the behavior of
.Nm
itself).
-.It Ic PMC_OP_GETMODULEVERSION
+.It Dv PMC_OP_GETMODULEVERSION
Retrieve the version number of API.
-.It Ic PMC_OP_GETPMCINFO
+.It Dv PMC_OP_GETPMCINFO
Retrieve information about the current state of the PMCs on a
given CPU.
-.It Ic PMC_OP_PMCADMIN
+.It Dv PMC_OP_PMCADMIN
Set the administrative state (i.e., whether enabled or disabled) for
the hardware PMCs managed by the
.Nm
driver.
-.It Ic PMC_OP_PMCALLOCATE
+.It Dv PMC_OP_PMCALLOCATE
Allocate and configure a PMC.
On successful allocation, a handle to the PMC (a small integer)
is returned.
-.It Ic PMC_OP_PMCATTACH
+.It Dv PMC_OP_PMCATTACH
Attach a process mode PMC to a target process.
The PMC will be active whenever a thread in the target process is
scheduled on a CPU.
@@ -297,58 +297,58 @@ If the
.Dv PMC_F_DESCENDANTS
flag had been specified at PMC allocation time, then the PMC is
attached to all current and future descendants of the target process.
-.It Ic PMC_OP_PMCDETACH
+.It Dv PMC_OP_PMCDETACH
Detach a PMC from its target process.
-.It Ic PMC_OP_PMCRELEASE
+.It Dv PMC_OP_PMCRELEASE
Release a PMC.
-.It Ic PMC_OP_PMCRW
+.It Dv PMC_OP_PMCRW
Read and write a PMC.
This operation is valid only for PMCs configured in counting modes.
-.It Ic PMC_OP_SETCOUNT
+.It Dv PMC_OP_SETCOUNT
Set the initial count (for counting mode PMCs) or the desired sampling
rate (for sampling mode PMCs).
-.It Ic PMC_OP_PMCSTART
+.It Dv PMC_OP_PMCSTART
Start a PMC.
-.It Ic PMC_OP_PMCSTOP
+.It Dv PMC_OP_PMCSTOP
Stop a PMC.
-.It Ic PMC_OP_WRITELOG
+.It Dv PMC_OP_WRITELOG
Insert a timestamped user record into the log file.
.El
-.Ss i386 SPECIFIC API
+.Ss i386 Specific API
Some i386 family CPUs support the RDPMC instruction which allows a
user process to read a PMC value without needing to invoke a
-.Ic PMC_OP_PMCRW
+.Dv PMC_OP_PMCRW
operation.
On such CPUs, the machine address associated with an allocated PMC is
retrievable using the
-.Ic PMC_OP_PMCX86GETMSR
+.Dv PMC_OP_PMCX86GETMSR
system call.
.Bl -tag -width indent
-.It Ic PMC_OP_PMCX86GETMSR
+.It Dv PMC_OP_PMCX86GETMSR
Retrieve the MSR (machine specific register) number associated with
the given PMC handle.
.Pp
The PMC needs to be in process-private mode and allocated without the
-.Va PMC_F_DESCENDANTS
+.Dv PMC_F_DESCENDANTS
modifier flag, and should be attached only to its owner process at the
time of the call.
.El
-.Ss amd64 SPECIFIC API
-AMD64 cpus support the RDPMC instruction which allows a
+.Ss amd64 Specific API
+AMD64 CPUs support the RDPMC instruction which allows a
user process to read a PMC value without needing to invoke a
-.Ic PMC_OP_PMCRW
+.Dv PMC_OP_PMCRW
operation.
The machine address associated with an allocated PMC is
retrievable using the
-.Ic PMC_OP_PMCX86GETMSR
+.Dv PMC_OP_PMCX86GETMSR
system call.
.Bl -tag -width indent
-.It Ic PMC_OP_PMCX86GETMSR
+.It Dv PMC_OP_PMCX86GETMSR
Retrieve the MSR (machine specific register) number associated with
the given PMC handle.
.Pp
The PMC needs to be in process-private mode and allocated without the
-.Va PMC_F_DESCENDANTS
+.Dv PMC_F_DESCENDANTS
modifier flag, and should be attached only to its owner process at the
time of the call.
.El
@@ -365,17 +365,17 @@ tunables:
(Only available if the
.Nm
driver was compiled with
-.Fl DDEBUG ) .
+.Fl DDEBUG . )
Control the verbosity of debug messages from the
.Nm
driver.
.It Va kern.hwpmc.hashsize Pq integer, read-only
-The number of rows in the hash-tables used to keep track of owner and
+The number of rows in the hash tables used to keep track of owner and
target processes.
The default is 16.
.It Va kern.hwpmc.logbuffersize Pq integer, read-only
The size in kilobytes of each log buffer used by
-.Nm Ap s
+.Nm Ns 's
logging function.
The default buffers size is 4KB.
.It Va kern.hwpmc.mtxpoolsize Pq integer, read-only
@@ -387,7 +387,7 @@ The number of log buffers used by
for logging.
The default is 16.
.It Va kern.hwpmc.nsamples Pq integer, read-only
-The number of entries in the per-cpu ring buffer used during sampling.
+The number of entries in the per-CPU ring buffer used during sampling.
The default is 16.
.It Va security.bsd.unprivileged_syspmcs Pq boolean, read-write
If set to non-zero, allow unprivileged processes to allocate system-wide
@@ -414,7 +414,7 @@ the following options are available:
Set the
.Xr sysctl 8
tunable
-.Va "security.bsd.unprivileged_syspmcs"
+.Va security.bsd.unprivileged_syspmcs
to 0.
This ensures that unprivileged processes cannot allocate system-wide
PMCs and thus cannot observe the hardware behavior of the system
@@ -430,7 +430,7 @@ driver into the kernel.
Set the
.Xr sysctl 8
tunable
-.Va "security.bsd.unprivileged_proc_debug"
+.Va security.bsd.unprivileged_proc_debug
to 0.
This will ensure that an unprivileged process cannot attach a PMC
to any process other than itself and thus cannot observe the hardware
@@ -452,7 +452,7 @@ has permitted user processes running at a processor CPL of 3 to
read the TSC using the RDTSC instruction.
The
.Nm
-driver preserves this semantic.
+driver preserves this semantics.
.Ss Intel P4/HTT Handling
On CPUs with HTT support, Intel P4 PMCs are capable of qualifying
only a subset of hardware events on a per-logical CPU basis.
@@ -478,60 +478,58 @@ For process-virtual PMCs, the
.Nm
driver implements a workaround in software and makes the corrected 64
bit count available via the
-.Ic PMC_OP_RW
+.Dv PMC_OP_RW
operation.
Processes that intend to use RDPMC instructions directly or
that intend to write values larger than 2^31 into these PMCs with
-.Ic PMC_OP_RW
+.Dv PMC_OP_RW
need to be aware of this hardware limitation.
.Sh DIAGNOSTICS
.Bl -diag
-.It hwpmc: tunable hashsize=%d must be greater than zero.
+.It "hwpmc: tunable hashsize=%d must be greater than zero."
A negative value was supplied for tunable
.Va kern.hwpmc.hashsize .
-.It hwpmc: tunable logbuffersize=%d must be greater than zero.
+.It "hwpmc: tunable logbuffersize=%d must be greater than zero."
A negative value was supplied for tunable
.Va kern.hwpmc.logbuffersize .
-.It hwpmc: tunable nlogbuffers=%d must be greater than zero.
+.It "hwpmc: tunable nlogbuffers=%d must be greater than zero."
A negative value was supplied for tunable
.Va kern.hwpmc.nlogbuffers .
-.It hwpmc: tunable nsamples=%d out of range.
+.It "hwpmc: tunable nsamples=%d out of range."
The value for tunable
.Va kern.hwpmc.nsamples
was negative or greater than 65535.
.El
.Sh ERRORS
-An command issued to the
+A command issued to the
.Nm
driver may fail with the following errors:
.Bl -tag -width Er
.It Bq Er EBUSY
-An
-.Ic OP_CONFIGURELOG
+A
+.Dv PMC_OP_CONFIGURELOG
operation was requested while an existing log was active.
.It Bq Er EBUSY
-A
-.Ic DISABLE
-operation was requested using the
-.Ic PMC_OP_PMCADMIN
+A DISABLE operation was requested using the
+.Dv PMC_OP_PMCADMIN
request for a set of hardware resources currently in use for
process-private PMCs.
.It Bq Er EBUSY
A
-.Ic PMC_OP_PMCADMIN
+.Dv PMC_OP_PMCADMIN
operation was requested on an active system mode PMC.
.It Bq Er EBUSY
A
-.Ic PMC_OP_PMCATTACH
+.Dv PMC_OP_PMCATTACH
operation was requested for a target process that already had another
PMC using the same hardware resources attached to it.
.It Bq Er EBUSY
-An
-.Ic PMC_OP_PMCRW
+A
+.Dv PMC_OP_PMCRW
request writing a new value was issued on a PMC that was active.
.It Bq Er EDOOFUS
A
-.Ic PMC_OP_PMCSTART
+.Dv PMC_OP_PMCSTART
operation was requested without a log file being configured for a
PMC allocated with
.Dv PMC_F_LOG_PROCCSW
@@ -539,12 +537,12 @@ and
.Dv PMC_F_LOG_PROCEXIT
modifiers.
.It Bq Er EBUSY
-An
-.Ic PMC_OP_PMCSETCOUNT
+A
+.Dv PMC_OP_PMCSETCOUNT
request was issued on a PMC that was active.
.It Bq Er EEXIST
A
-.Ic PMC_OP_PMCATTACH
+.Dv PMC_OP_PMCATTACH
request was reissued for a target process that already is the target
of this PMC.
.It Bq Er EFAULT
@@ -552,119 +550,121 @@ A bad address was passed in to the driver.
.It Bq Er EINVAL
A process specified an invalid PMC handle.
.It Bq Er EINVAL
-An invalid CPU number was passed in for an
-.Ic PMC_OP_GETPMCINFO
+An invalid CPU number was passed in for a
+.Dv PMC_OP_GETPMCINFO
operation.
.It Bq Er EINVAL
-An invalid CPU number was passed in for an
-.Ic PMC_OP_PMCADMIN
+An invalid CPU number was passed in for a
+.Dv PMC_OP_PMCADMIN
operation.
.It Bq Er EINVAL
-An invalid operation request was passed in for an
-.Ic PMC_OP_PMCADMIN
+An invalid operation request was passed in for a
+.Dv PMC_OP_PMCADMIN
operation.
.It Bq Er EINVAL
-An invalid PMC id was passed in for an
-.Ic PMC_OP_PMCADMIN
+An invalid PMC ID was passed in for a
+.Dv PMC_OP_PMCADMIN
operation.
.It Bq Er EINVAL
A suitable PMC matching the parameters passed in to a
-.Ic PMC_OP_PMCALLOCATE
+.Dv PMC_OP_PMCALLOCATE
request could not be allocated.
.It Bq Er EINVAL
An invalid PMC mode was requested during a
-.Ic PMC_OP_PMCALLOCATE
+.Dv PMC_OP_PMCALLOCATE
request.
.It Bq Er EINVAL
An invalid CPU number was specified during a
-.Ic PMC_OP_PMCALLOCATE
+.Dv PMC_OP_PMCALLOCATE
request.
.It Bq Er EINVAL
-A cpu other than
-.Li PMC_CPU_ANY
+A CPU other than
+.Dv PMC_CPU_ANY
was specified in a
-.Ic PMC_OP_ALLOCATE
+.Dv PMC_OP_ALLOCATE
request for a process-private PMC.
.It Bq Er EINVAL
-A cpu number of
-.Li PMC_CPU_ANY
+A CPU number of
+.Dv PMC_CPU_ANY
was specified in a
-.Ic PMC_OP_ALLOCATE
+.Dv PMC_OP_ALLOCATE
request for a system-wide PMC.
.It Bq Er EINVAL
The
.Ar pm_flags
argument to an
-.Ic PMC_OP_PMCALLOCATE
+.Dv PMC_OP_PMCALLOCATE
request contained unknown flags.
.It Bq Er EINVAL
A PMC allocated for system-wide operation was specified with a
-.Ic PMC_OP_PMCATTACH
+.Dv PMC_OP_PMCATTACH
request.
.It Bq Er EINVAL
The
.Ar pm_pid
argument to a
-.Ic PMC_OP_PMCATTACH
-request specified an illegal process id.
+.Dv PMC_OP_PMCATTACH
+request specified an illegal process ID.
.It Bq Er EINVAL
A
-.Ic PMC_OP_PMCDETACH
+.Dv PMC_OP_PMCDETACH
request was issued for a PMC not attached to the target process.
.It Bq Er EINVAL
Argument
.Ar pm_flags
to a
-.Ic PMC_OP_PMCRW
+.Dv PMC_OP_PMCRW
request contained illegal flags.
.It Bq Er EINVAL
A
-.Ic PMC_OP_PMCX86GETMSR
+.Dv PMC_OP_PMCX86GETMSR
operation was requested for a PMC not in process-virtual mode, or
for a PMC that is not solely attached to its owner process, or for
a PMC that was allocated with flag
-.Va PMC_F_DESCENDANTS .
+.Dv PMC_F_DESCENDANTS .
.It Bq Er EINVAL
-(On Intel Pentium 4 CPUs with HTT support) An allocation request for
+(On Intel Pentium 4 CPUs with HTT support)
+An allocation request for
a process-private PMC was issued for an event that does not support
counting on a per-logical CPU basis.
.It Bq Er ENOMEM
The system was not able to allocate kernel memory.
.It Bq Er ENOSYS
-(i386 architectures) A
-.Ic PMC_OP_PMCX86GETMSR
+(i386 architectures)
+A
+.Dv PMC_OP_PMCX86GETMSR
operation was requested for hardware that does not support reading
PMCs directly with the RDPMC instruction.
.It Bq Er ENXIO
-An
-.Ic OP_GETPMCINFO
+A
+.Dv PMC_OP_GETPMCINFO
operation was requested for a disabled CPU.
.It Bq Er ENXIO
A system-wide PMC on a disabled CPU was requested to be allocated with
-.Ic PMC_OP_PMCALLOCATE .
+.Dv PMC_OP_PMCALLOCATE .
.It Bq Er ENXIO
A
-.Ic PMC_OP_PMCSTART
+.Dv PMC_OP_PMCSTART
or
-.Ic PMC_OP_PMCSTOP
+.Dv PMC_OP_PMCSTOP
request was issued for a system-wide PMC that was allocated on a
currently disabled CPU.
.It Bq Er EPERM
-An
-.Ic OP_PMCADMIN
+A
+.Dv PMC_OP_PMCADMIN
request was issued by a process without super-user
privilege or by a jailed super-user process.
.It Bq Er EPERM
-An
-.Ic PMC_OP_PMCATTACH
+A
+.Dv PMC_OP_PMCATTACH
operation was issued for a target process that the current process
does not have permission to attach to.
.It Bq Er EPERM
-.Pq "i386 and amd64 architectures"
-An
-.Ic PMC_OP_PMCATTACH
+(i386 and amd64 architectures)
+A
+.Dv PMC_OP_PMCATTACH
operation was issued on a PMC whose MSR has been retrieved using
-.Ic PMC_OP_PMCX86GETMSR .
+.Dv PMC_OP_PMCX86GETMSR .
.It Bq Er ESRCH
A process issued a PMC operation request without having allocated any
PMCs.
@@ -673,21 +673,15 @@ A process issued a PMC operation request after the PMC was detached
from all of its target processes.
.It Bq Er ESRCH
A
-.Ic PMC_OP_PMCATTACH
-request specified a non-existent process id.
+.Dv PMC_OP_PMCATTACH
+request specified a non-existent process ID.
.It Bq Er ESRCH
The target process for a
-.Ic PMC_OP_PMCDETACH
+.Dv PMC_OP_PMCDETACH
operation is not being monitored by the
.Nm
driver.
.El
-.Sh BUGS
-The driver samples the state of the kernel's logical processor support
-at the time of initialization (i.e., at module load time).
-On CPUs supporting logical processors, the driver could misbehave if
-logical processors are subsequently enabled or disabled while the
-driver is active.
.Sh SEE ALSO
.Xr kenv 1 ,
.Xr pmc 3 ,
@@ -697,3 +691,9 @@ driver is active.
.Xr pmcstat 8 ,
.Xr sysctl 8 ,
.Xr p_candebug 9
+.Sh BUGS
+The driver samples the state of the kernel's logical processor support
+at the time of initialization (i.e., at module load time).
+On CPUs supporting logical processors, the driver could misbehave if
+logical processors are subsequently enabled or disabled while the
+driver is active.
OpenPOWER on IntegriCloud