Re: [PATCH] perf_event_open.2: srcfix

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Alex,

On 11/13/20 9:34 PM, Alejandro Colomar wrote:
> Signed-off-by: Alejandro Colomar <alx.manpages@xxxxxxxxx>
> ---
> 
> Hi Michael,
> 
> Here are a few srcfixes I found.
> And an unnecessary parentheses removal in an example.

Thanks. Applied.

Cheers,

Michael

>  man2/perf_event_open.2 | 215 +++++++++++++++++++++++------------------
>  1 file changed, 122 insertions(+), 93 deletions(-)
> 
> diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
> index eb7ab29ea..e7b0aa132 100644
> --- a/man2/perf_event_open.2
> +++ b/man2/perf_event_open.2
> @@ -126,7 +126,7 @@ The leader is created first, with
>  The rest of the group members are created with subsequent
>  .BR perf_event_open ()
>  calls with
> -.IR group_fd
> +.I group_fd
>  being set to the file descriptor of the group leader.
>  (A single event on its own is created with
>  .IR group_fd " = \-1"
> @@ -162,7 +162,7 @@ then
>  .TP
>  .BR PERF_FLAG_FD_NO_GROUP
>  This flag tells the event to ignore the
> -.IR group_fd
> +.I group_fd
>  parameter except for the purpose of setting up output redirection
>  using the
>  .B PERF_FLAG_FD_OUTPUT
> @@ -352,7 +352,11 @@ These two dynamic PMUs create a kprobe/uprobe and attach it to the
>  file descriptor generated by perf_event_open.
>  The kprobe/uprobe will be destroyed on the destruction of the file descriptor.
>  See fields
> -.IR kprobe_func ", " uprobe_path ", " kprobe_addr ", and " probe_offset
> +.IR kprobe_func ,
> +.IR uprobe_path ,
> +.IR kprobe_addr ,
> +and
> +.I probe_offset
>  for more details.
>  .RE
>  .TP
> @@ -401,7 +405,9 @@ the
>  .I type
>  field.
>  The
> -.IR config1 " and " config2
> +.I config1
> +and
> +.I config2
>  fields are also taken into account in cases where 64 bits is not
>  enough to fully specify the event.
>  The encoding of these fields are event dependent.
> @@ -558,15 +564,15 @@ then we are measuring a hardware CPU cache event.
>  To calculate the appropriate
>  .I config
>  value use the following equation:
> -.PP
> -.RS 4
>  .RS 4
> +.PP
> +.in +4n
>  .EX
>  config = (perf_hw_cache_id) |
>           (perf_hw_cache_op_id << 8) |
>           (perf_hw_cache_op_result_id << 16);
>  .EE
> -.RE
> +.in
>  .PP
>  where
>  .I perf_hw_cache_id
> @@ -652,24 +658,28 @@ Its parameters are set in other places.
>  If
>  .I type
>  is
> -.BR kprobe
> +.B kprobe
>  or
>  .BR uprobe ,
>  set
> -.IR retprobe
> +.I retprobe
>  (bit 0 of
>  .IR config ,
>  see
>  .IR /sys/bus/event_source/devices/[k,u]probe/format/retprobe )
>  for kretprobe/uretprobe.
>  See fields
> -.IR kprobe_func ", " uprobe_path ", " kprobe_addr ", and " probe_offset
> +.IR kprobe_func ,
> +.IR uprobe_path ,
> +.IR kprobe_addr ,
> +and
> +.I probe_offset
>  for more details.
>  .RE
>  .TP
>  .IR kprobe_func ", " uprobe_path ", " kprobe_addr ", and " probe_offset
>  These fields describe the kprobe/uprobe for dynamic PMUs
> -.BR kprobe
> +.B kprobe
>  and
>  .BR uprobe .
>  For
> @@ -712,7 +722,7 @@ to try and achieve the desired rate.
>  The rate of adjustment is a
>  timer tick.
>  .TP
> -.I "sample_type"
> +.I sample_type
>  The various bits in this field specify which values to include
>  in the sample.
>  They will be recorded in a ring-buffer,
> @@ -859,7 +869,7 @@ hardware at the time of the sampled
>  instruction's retirement.
>  .RE
>  .TP
> -.IR "read_format"
> +.I read_format
>  This field specifies the format of the data returned by
>  .BR read (2)
>  on a
> @@ -888,7 +898,7 @@ Adds a 64-bit unique value that corresponds to the event group.
>  Allows all counter values in an event group to be read with one read.
>  .RE
>  .TP
> -.IR "disabled"
> +.I disabled
>  The
>  .I disabled
>  bit specifies whether the counter starts out disabled or enabled.
> @@ -909,7 +919,7 @@ Despite
>  being 0, the child events will not start until the group leader
>  is enabled.
>  .TP
> -.IR "inherit"
> +.I inherit
>  The
>  .I inherit
>  bit specifies that this counter should count events of child
> @@ -923,7 +933,7 @@ Inherit does not work for some combinations of
>  values, such as
>  .BR PERF_FORMAT_GROUP .
>  .TP
> -.IR "pinned"
> +.I pinned
>  The
>  .I pinned
>  bit specifies that the counter should always be on the CPU if at all
> @@ -936,7 +946,7 @@ return end-of-file (i.e.,
>  .BR read (2)
>  returns 0) until the counter is subsequently enabled or disabled.
>  .TP
> -.IR "exclusive"
> +.I exclusive
>  The
>  .I exclusive
>  bit specifies that when this counter's group is on the CPU,
> @@ -952,13 +962,13 @@ This includes any users running a system-wide
>  measurement as well as any kernel use of the performance counters
>  (including the commonly enabled NMI Watchdog Timer interface).
>  .TP
> -.IR "exclude_user"
> +.I exclude_user
>  If this bit is set, the count excludes events that happen in user space.
>  .TP
> -.IR "exclude_kernel"
> +.I exclude_kernel
>  If this bit is set, the count excludes events that happen in kernel space.
>  .TP
> -.IR "exclude_hv"
> +.I exclude_hv
>  If this bit is set, the count excludes events that happen in the
>  hypervisor.
>  This is mainly for PMUs that have built-in support for handling this
> @@ -966,12 +976,12 @@ This is mainly for PMUs that have built-in support for handling this
>  Extra support is needed for handling hypervisor measurements on most
>  machines.
>  .TP
> -.IR "exclude_idle"
> +.I exclude_idle
>  If set, don't count when the CPU is running the idle task.
>  While you can currently enable this for any event type, it is ignored
>  for all but software events.
>  .TP
> -.IR "mmap"
> +.I mmap
>  The
>  .I mmap
>  bit enables generation of
> @@ -985,7 +995,7 @@ This allows tools to notice new executable code being mapped into
>  a program (dynamic shared libraries for example)
>  so that addresses can be mapped back to the original code.
>  .TP
> -.IR "comm"
> +.I comm
>  The
>  .I comm
>  bit enables tracking of process command name as modified by the
> @@ -1004,30 +1014,30 @@ can be used to differentiate the
>  .BR exec (2)
>  case from the others.
>  .TP
> -.IR "freq"
> +.I freq
>  If this bit is set, then
>  .I sample_frequency
>  not
>  .I sample_period
>  is used when setting up the sampling interval.
>  .TP
> -.IR "inherit_stat"
> +.I inherit_stat
>  This bit enables saving of event counts on context switch for
>  inherited tasks.
>  This is meaningful only if the
>  .I inherit
>  field is set.
>  .TP
> -.IR "enable_on_exec"
> +.I enable_on_exec
>  If this bit is set, a counter is automatically
>  enabled after a call to
>  .BR exec (2).
>  .TP
> -.IR "task"
> +.I task
>  If this bit is set, then
>  fork/exit notifications are included in the ring buffer.
>  .TP
> -.IR "watermark"
> +.I watermark
>  If set, have an overflow notification happen when we cross the
>  .I wakeup_watermark
>  boundary.
> @@ -1035,7 +1045,7 @@ Otherwise, overflow notifications happen after
>  .I wakeup_events
>  samples.
>  .TP
> -.IR "precise_ip" " (since Linux 2.6.35)"
> +.IR precise_ip " (since Linux 2.6.35)"
>  .\" commit ab608344bcbde4f55ec4cd911b686b0ce3eae076
>  This controls the amount of skid.
>  Skid is how many instructions
> @@ -1064,7 +1074,7 @@ See also the description of
>  .BR PERF_RECORD_MISC_EXACT_IP .
>  .RE
>  .TP
> -.IR "mmap_data" " (since Linux 2.6.36)"
> +.IR mmap_data " (since Linux 2.6.36)"
>  .\" commit 3af9e859281bda7eb7c20b51879cf43aa788ac2e
>  This is the counterpart of the
>  .I mmap
> @@ -1077,7 +1087,7 @@ calls that do not have
>  .B PROT_EXEC
>  set (for example data and SysV shared memory).
>  .TP
> -.IR "sample_id_all" " (since Linux 2.6.38)"
> +.IR sample_id_all " (since Linux 2.6.38)"
>  .\" commit c980d1091810df13f21aabbce545fd98f545bbf7
>  If set, then TID, TIME, ID, STREAM_ID, and CPU can
>  additionally be included in
> @@ -1109,7 +1119,7 @@ struct sample_id {
>  .EE
>  .in
>  .TP
> -.IR "exclude_host" " (since Linux 3.2)"
> +.IR exclude_host " (since Linux 3.2)"
>  .\" commit a240f76165e6255384d4bdb8139895fac7988799
>  When conducting measurements that include processes running
>  VM instances (i.e., have executed a
> @@ -1120,7 +1130,7 @@ This is only meaningful outside the guests; this setting does
>  not change counts gathered inside of a guest.
>  Currently, this functionality is x86 only.
>  .TP
> -.IR "exclude_guest" " (since Linux 3.2)"
> +.IR exclude_guest " (since Linux 3.2)"
>  .\" commit a240f76165e6255384d4bdb8139895fac7988799
>  When conducting measurements that include processes running
>  VM instances (i.e., have executed a
> @@ -1131,15 +1141,15 @@ This is only meaningful outside the guests; this setting does
>  not change counts gathered inside of a guest.
>  Currently, this functionality is x86 only.
>  .TP
> -.IR "exclude_callchain_kernel" " (since Linux 3.7)"
> +.IR exclude_callchain_kernel " (since Linux 3.7)"
>  .\" commit d077526485d5c9b12fe85d0b2b3b7041e6bc5f91
>  Do not include kernel callchains.
>  .TP
> -.IR "exclude_callchain_user" " (since Linux 3.7)"
> +.IR exclude_callchain_user " (since Linux 3.7)"
>  .\" commit d077526485d5c9b12fe85d0b2b3b7041e6bc5f91
>  Do not include user callchains.
>  .TP
> -.IR "mmap2" " (since Linux 3.16)"
> +.IR mmap2 " (since Linux 3.16)"
>  .\" commit 13d7a2410fa637f450a29ecb515ac318ee40c741
>  .\" This is tricky; was committed during 3.12 development
>  .\" but right before release was disabled.
> @@ -1152,7 +1162,7 @@ The
>  .I mmap
>  flag must also be set for this to work.
>  .TP
> -.IR "comm_exec" " (since Linux 3.16)"
> +.IR comm_exec " (since Linux 3.16)"
>  .\" commit 82b897782d10fcc4930c9d4a15b175348fdd2871
>  This is purely a feature-detection flag, it does not change
>  kernel behavior.
> @@ -1168,7 +1178,7 @@ reported was caused by a call to
>  This allows tools to distinguish between the various
>  types of process renaming.
>  .TP
> -.IR "use_clockid" " (since Linux 4.1)"
> +.IR use_clockid " (since Linux 4.1)"
>  .\" commit 34f439278cef7b1177f8ce24f9fc81dfc6221d3b
>  This allows selecting which internal Linux clock to use
>  when generating timestamps via the
> @@ -1177,7 +1187,7 @@ field.
>  This can make it easier to correlate perf sample times with
>  timestamps generated by other tools.
>  .TP
> -.IR "context_switch" " (since Linux 4.3)"
> +.IR context_switch " (since Linux 4.3)"
>  .\" commit 45ac1403f564f411c6a383a2448688ba8dd705a4
>  This enables the generation of
>  .B PERF_RECORD_SWITCH
> @@ -1192,7 +1202,7 @@ information even with strict
>  .I perf_event_paranoid
>  settings.
>  .TP
> -.IR "wakeup_events" ", " "wakeup_watermark"
> +.IR wakeup_events ", " wakeup_watermark
>  This union sets how many samples
>  .RI ( wakeup_events )
>  or bytes
> @@ -1218,25 +1228,25 @@ Prior to Linux 3.0, setting
>  to 0 resulted in no overflow notifications;
>  more recent kernels treat 0 the same as 1.
>  .TP
> -.IR "bp_type" " (since Linux 2.6.33)"
> +.IR bp_type " (since Linux 2.6.33)"
>  .\" commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
>  This chooses the breakpoint type.
>  It is one of:
>  .RS
>  .TP
> -.BR HW_BREAKPOINT_EMPTY
> +.B HW_BREAKPOINT_EMPTY
>  No breakpoint.
>  .TP
> -.BR HW_BREAKPOINT_R
> +.B HW_BREAKPOINT_R
>  Count when we read the memory location.
>  .TP
> -.BR HW_BREAKPOINT_W
> +.B HW_BREAKPOINT_W
>  Count when we write the memory location.
>  .TP
> -.BR HW_BREAKPOINT_RW
> +.B HW_BREAKPOINT_RW
>  Count when we read or write the memory location.
>  .TP
> -.BR HW_BREAKPOINT_X
> +.B HW_BREAKPOINT_X
>  Count when we execute code at the memory location.
>  .PP
>  The values can be combined via a bitwise or, but the
> @@ -1249,14 +1259,14 @@ with
>  is not allowed.
>  .RE
>  .TP
> -.IR "bp_addr" " (since Linux 2.6.33)"
> +.IR bp_addr " (since Linux 2.6.33)"
>  .\" commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
>  This is the address of the breakpoint.
>  For execution breakpoints, this is the memory address of the instruction
>  of interest; for read and write breakpoints, it is the memory address
>  of the memory location of interest.
>  .TP
> -.IR "config1" " (since Linux 2.6.39)"
> +.IR config1 " (since Linux 2.6.39)"
>  .\" commit a7e3ed1e470116c9d12c2f778431a481a6be8ab6
>  .I config1
>  is used for setting events that need an extra register or otherwise
> @@ -1264,7 +1274,7 @@ do not fit in the regular config field.
>  Raw OFFCORE_EVENTS on Nehalem/Westmere/SandyBridge use this field
>  on Linux 3.3 and later kernels.
>  .TP
> -.IR "bp_len" " (since Linux 2.6.33)"
> +.IR bp_len " (since Linux 2.6.33)"
>  .\" commit 24f1e32c60c45c89a997c73395b69c8af6f0a84e
>  .I bp_len
>  is the length of the breakpoint being measured if
> @@ -1280,14 +1290,14 @@ and
>  For an execution breakpoint, set this to
>  .IR sizeof(long) .
>  .TP
> -.IR "config2" " (since Linux 2.6.39)"
> +.IR config2 " (since Linux 2.6.39)"
>  .\" commit a7e3ed1e470116c9d12c2f778431a481a6be8ab6
>  .I config2
>  is a further extension of the
>  .I config1
>  field.
>  .TP
> -.IR "branch_sample_type" " (since Linux 3.4)"
> +.IR branch_sample_type " (since Linux 3.4)"
>  .\" commit bce38cd53e5ddba9cb6d708c4ef3d04a4016ec7e
>  If
>  .B PERF_SAMPLE_BRANCH_STACK
> @@ -1358,20 +1368,20 @@ This requires hardware support, currently only found
>  on Intel x86 Haswell or newer.
>  .RE
>  .TP
> -.IR "sample_regs_user" " (since Linux 3.7)"
> +.IR sample_regs_user " (since Linux 3.7)"
>  .\" commit 4018994f3d8785275ef0e7391b75c3462c029e56
>  This bit mask defines the set of user CPU registers to dump on samples.
>  The layout of the register mask is architecture-specific and
>  is described in the kernel header file
>  .IR arch/ARCH/include/uapi/asm/perf_regs.h .
>  .TP
> -.IR "sample_stack_user" " (since Linux 3.7)"
> +.IR sample_stack_user " (since Linux 3.7)"
>  .\" commit c5ebcedb566ef17bda7b02686e0d658a7bb42ee7
>  This defines the size of the user stack to dump if
>  .B PERF_SAMPLE_STACK_USER
>  is specified.
>  .TP
> -.IR "clockid" " (since Linux 4.1)"
> +.IR clockid " (since Linux 4.1)"
>  .\" commit 34f439278cef7b1177f8ce24f9fc81dfc6221d3b
>  If
>  .I use_clockid
> @@ -1388,13 +1398,13 @@ and
>  .B CLOCK_TAI
>  currently supported.
>  .TP
> -.IR "aux_watermark" " (since Linux 4.1)"
> +.IR aux_watermark " (since Linux 4.1)"
>  .\" commit 1a5941312414c71dece6717da9a0fa1303127afa
>  This specifies how much data is required to trigger a
>  .B PERF_RECORD_AUX
>  sample.
>  .TP
> -.IR "sample_max_stack" " (since Linux 4.8)"
> +.IR sample_max_stack " (since Linux 4.8)"
>  .\" commit 97c79a38cd454602645f0470ffb444b3b75ce574
>  When
>  .I sample_type
> @@ -1682,34 +1692,39 @@ delta since
>  .I time_enabled
>  (in nanoseconds) using rdtsc or similar.
>  .IP
> -.nf
> -    u64 quot, rem;
> -    u64 delta;
> -    quot = (cyc >> time_shift);
> -    rem = cyc & (((u64)1 << time_shift) \- 1);
> -    delta = time_offset + quot * time_mult +
> -            ((rem * time_mult) >> time_shift);
> -.fi
> +.in +4n
> +.EX
> +u64 quot, rem;
> +u64 delta;
> +
> +quot  = cyc >> time_shift;
> +rem   = cyc & (((u64)1 << time_shift) \- 1);
> +delta = time_offset + quot * time_mult +
> +        ((rem * time_mult) >> time_shift);
> +.EE
> +.in
>  .IP
>  Where
>  .IR time_offset ,
>  .IR time_mult ,
>  .IR time_shift ,
>  and
> -.IR cyc
> +.I cyc
>  are read in the
>  seqcount loop described above.
>  This delta can then be added to
>  enabled and possible running (if idx), improving the scaling:
>  .IP
> -.nf
> -    enabled += delta;
> -    if (idx)
> -        running += delta;
> -    quot = count / running;
> -    rem  = count % running;
> -    count = quot * enabled + (rem * enabled) / running;
> -.fi
> +.in +4n
> +.EX
> +enabled += delta;
> +if (idx)
> +    running += delta;
> +quot  = count / running;
> +rem   = count % running;
> +count = quot * enabled + (rem * enabled) / running;
> +.EE
> +.in
>  .TP
>  .IR time_zero " (since Linux 3.12)"
>  .\" commit fa7315871046b9a4c48627905691dbde57e51033
> @@ -1718,23 +1733,31 @@ If
>  .I cap_usr_time_zero
>  is set, then the hardware clock (the TSC timestamp counter on x86)
>  can be calculated from the
> -.IR time_zero ", " time_mult ", and " time_shift " values:"
> +.IR time_zero ,
> +.IR time_mult ,
> +and
> +.I time_shift
> +values:
>  .IP
> -.nf
> -    time = timestamp - time_zero;
> -    quot = time / time_mult;
> -    rem  = time % time_mult;
> -    cyc = (quot << time_shift) + (rem << time_shift) / time_mult;
> -.fi
> +.in +4n
> +.EX
> +time = timestamp - time_zero;
> +quot = time / time_mult;
> +rem  = time % time_mult;
> +cyc  = (quot << time_shift) + (rem << time_shift) / time_mult;
> +.EE
> +.in
>  .IP
>  And vice versa:
>  .IP
> -.nf
> -    quot = cyc >> time_shift;
> -    rem  = cyc & (((u64)1 << time_shift) - 1);
> -    timestamp = time_zero + quot * time_mult +
> -        ((rem * time_mult) >> time_shift);
> -.fi
> +.in +4n
> +.EX
> +quot = cyc >> time_shift;
> +rem  = cyc & (((u64)1 << time_shift) - 1);
> +timestamp = time_zero + quot * time_mult +
> +            ((rem * time_mult) >> time_shift);
> +.EE
> +.in
>  .TP
>  .I data_head
>  This points to the head of the data section.
> @@ -1785,7 +1808,7 @@ The desired offset and size must be page aligned, and the size
>  must be a power of two.
>  These values are then passed to mmap in order to map the AUX buffer.
>  Pages in the AUX buffer are included as part of the
> -.BR RLIMIT_MEMLOCK
> +.B RLIMIT_MEMLOCK
>  resource limit (see
>  .BR setrlimit (2)),
>  and also as part of the
> @@ -1802,10 +1825,14 @@ new data began, and it is the consumer's job to disable
>  measurement while reading to avoid possible data races.
>  .IP
>  The
> -.IR aux_head " and " aux_tail
> +.I aux_head
> +and
> +.I aux_tail
>  ring buffer pointers have the same behavior and ordering
>  rules as the previous described
> -.IR data_head " and " data_tail .
> +.I data_head
> +and
> +.IR data_tail .
>  .PP
>  The following 2^n ring-buffer pages have the layout described below.
>  .PP
> @@ -1897,9 +1924,9 @@ system call.
>  .BR PERF_RECORD_MISC_SWITCH_OUT " (since Linux 4.3)"
>  .\" commit 45ac1403f564f411c6a383a2448688ba8dd705a4
>  When a
> -.BR PERF_RECORD_SWITCH
> +.B PERF_RECORD_SWITCH
>  or
> -.BR PERF_RECORD_SWITCH_CPU_WIDE
> +.B PERF_RECORD_SWITCH_CPU_WIDE
>  record is generated, this bit indicates that the
>  context switch is away from the current process
>  (instead of into the current process).
> @@ -2267,7 +2294,7 @@ Support for
>  .IR mispred ,
>  .IR predicted ,
>  and
> -.IR cycles
> +.I cycles
>  is optional; if not supported, those
>  values will be 0.
>  .PP
> @@ -2284,7 +2311,9 @@ is enabled, then the user CPU registers are recorded.
>  The
>  .I abi
>  field is one of
> -.BR PERF_SAMPLE_REGS_ABI_NONE ", " PERF_SAMPLE_REGS_ABI_32 " or"
> +.BR PERF_SAMPLE_REGS_ABI_NONE ,
> +.BR PERF_SAMPLE_REGS_ABI_32 ,
> +or
>  .BR PERF_SAMPLE_REGS_ABI_64 .
>  .IP
>  The
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/



[Index of Archives]     [Kernel Documentation]     [Netdev]     [Linux Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux