msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2013-04-30 20:29+0900\n"
+"POT-Creation-Date: 2013-08-15 19:32+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"The B<arch_prctl>() function sets architecture-specific process or thread "
"state. I<code> selects a subfunction and passes argument I<addr> to it; "
"I<addr> is interpreted as either an I<unsigned long> for the \"set\" "
-"operations, or as an I<unsigned long *>, for the \"get\" operations."
+"operations, or as an I<unsigned long\\ *>, for the \"get\" operations."
msgstr ""
#. type: Plain text
msgstr ""
#. type: SH
-#: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:209 build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81 build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43 build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51 build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:1804 build/C/man2/perfmonctl.2:190 build/C/man2/personality.2:57 build/C/man2/pivot_root.2:101 build/C/man2/process_vm_readv.2:209 build/C/man2/ptrace.2:1714 build/C/man2/quotactl.2:419 build/C/man2/sendfile.2:108 build/C/man2/set_tid_address.2:88 build/C/man2/splice.2:127 build/C/man2/tee.2:85 build/C/man2/vm86.2:52 build/C/man2/vmsplice.2:113
+#: build/C/man2/arch_prctl.2:82 build/C/man2/futex.2:209 build/C/man2/get_robust_list.2:77 build/C/man2/getunwind.2:81 build/C/man2/kexec_load.2:114 build/C/man2/lookup_dcookie.2:43 build/C/man2/modify_ldt.2:98 build/C/man2/nfsservctl.2:51 build/C/man2/pciconfig_read.2:50 build/C/man2/perf_event_open.2:2026 build/C/man2/perfmonctl.2:190 build/C/man2/personality.2:57 build/C/man2/pivot_root.2:101 build/C/man2/process_vm_readv.2:209 build/C/man2/ptrace.2:1780 build/C/man2/quotactl.2:419 build/C/man2/sendfile.2:108 build/C/man2/set_tid_address.2:88 build/C/man2/splice.2:127 build/C/man2/tee.2:85 build/C/man2/vm86.2:54 build/C/man2/vmsplice.2:113
#, no-wrap
msgid "RETURN VALUE"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234 build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88 build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50 build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77 build/C/man2/perf_event_open.2:1810 build/C/man2/personality.2:64 build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229 build/C/man2/ptrace.2:1728 build/C/man2/quotactl.2:427 build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91 build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:57 build/C/man2/vmsplice.2:122
+#: build/C/man2/arch_prctl.2:88 build/C/man2/futex.2:234 build/C/man2/get_robust_list.2:84 build/C/man2/getunwind.2:88 build/C/man2/kexec_load.2:121 build/C/man2/lookup_dcookie.2:50 build/C/man2/modify_ldt.2:108 build/C/man2/pciconfig_read.2:77 build/C/man2/perf_event_open.2:2032 build/C/man2/personality.2:64 build/C/man2/pivot_root.2:105 build/C/man2/process_vm_readv.2:229 build/C/man2/ptrace.2:1801 build/C/man2/quotactl.2:427 build/C/man2/sendfile.2:115 build/C/man2/set_tid_address.2:91 build/C/man2/splice.2:142 build/C/man2/tee.2:100 build/C/man2/vm86.2:59 build/C/man2/vmsplice.2:122
#, no-wrap
msgid "ERRORS"
msgstr ""
#. type: TP
-#: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249 build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51 build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251 build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1732 build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125 build/C/man2/vm86.2:58
+#: build/C/man2/arch_prctl.2:89 build/C/man2/futex.2:249 build/C/man2/get_robust_list.2:111 build/C/man2/lookup_dcookie.2:51 build/C/man2/modify_ldt.2:109 build/C/man2/process_vm_readv.2:251 build/C/man2/process_vm_readv.2:256 build/C/man2/ptrace.2:1805 build/C/man2/quotactl.2:428 build/C/man2/sendfile.2:125 build/C/man2/vm86.2:60
#, no-wrap
msgid "B<EFAULT>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261 build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126 build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113 build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:1811 build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114 build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241 build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1743 build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501 build/C/man2/sendfile.2:128 build/C/man2/splice.2:147 build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
+#: build/C/man2/arch_prctl.2:93 build/C/man2/futex.2:261 build/C/man2/get_robust_list.2:88 build/C/man2/kexec_load.2:126 build/C/man2/lookup_dcookie.2:54 build/C/man2/modify_ldt.2:113 build/C/man2/pciconfig_read.2:78 build/C/man2/perf_event_open.2:2033 build/C/man2/personality.2:65 build/C/man2/pivot_root.2:114 build/C/man2/process_vm_readv.2:230 build/C/man2/process_vm_readv.2:241 build/C/man2/process_vm_readv.2:245 build/C/man2/ptrace.2:1816 build/C/man2/quotactl.2:434 build/C/man2/quotactl.2:501 build/C/man2/sendfile.2:128 build/C/man2/splice.2:147 build/C/man2/tee.2:101 build/C/man2/vmsplice.2:127
#, no-wrap
msgid "B<EINVAL>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98 build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65 build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120 build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1753 build/C/man2/quotactl.2:456 build/C/man2/vm86.2:66
+#: build/C/man2/arch_prctl.2:97 build/C/man2/get_robust_list.2:98 build/C/man2/kexec_load.2:133 build/C/man2/lookup_dcookie.2:65 build/C/man2/pciconfig_read.2:105 build/C/man2/pivot_root.2:120 build/C/man2/process_vm_readv.2:267 build/C/man2/ptrace.2:1826 build/C/man2/quotactl.2:456 build/C/man2/vm86.2:68
#, no-wrap
msgid "B<EPERM>"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296 build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142 build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130 build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87 build/C/man2/pciconfig_read.2:110 build/C/man2/perf_event_open.2:1829 build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68 build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279 build/C/man2/ptrace.2:1771 build/C/man2/sendfile.2:148 build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170 build/C/man2/tee.2:119 build/C/man2/vm86.2:71 build/C/man2/vmsplice.2:143
+#: build/C/man2/arch_prctl.2:103 build/C/man2/futex.2:296 build/C/man2/getunwind.2:96 build/C/man2/kexec_load.2:142 build/C/man2/lookup_dcookie.2:78 build/C/man2/modify_ldt.2:130 build/C/man2/nfsservctl.2:56 build/C/man2/outb.2:87 build/C/man2/pciconfig_read.2:112 build/C/man2/perf_event_open.2:2051 build/C/man2/perfmonctl.2:199 build/C/man2/personality.2:68 build/C/man2/pivot_root.2:128 build/C/man2/process_vm_readv.2:279 build/C/man2/ptrace.2:1844 build/C/man2/sendfile.2:148 build/C/man2/set_tid_address.2:97 build/C/man2/splice.2:170 build/C/man2/tee.2:119 build/C/man2/vm86.2:73 build/C/man2/vmsplice.2:143
#, no-wrap
msgid "CONFORMING TO"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298 build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99 build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81 build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:1834 build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131 build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1773 build/C/man2/sendfile.2:155 build/C/man2/splice.2:172 build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
+#: build/C/man2/arch_prctl.2:107 build/C/man2/futex.2:298 build/C/man2/get_robust_list.2:119 build/C/man2/getunwind.2:99 build/C/man2/kexec_load.2:144 build/C/man2/lookup_dcookie.2:81 build/C/man2/modify_ldt.2:133 build/C/man2/perf_event_open.2:2056 build/C/man2/perfmonctl.2:202 build/C/man2/pivot_root.2:131 build/C/man2/process_vm_readv.2:281 build/C/man2/ptrace.2:1846 build/C/man2/sendfile.2:155 build/C/man2/splice.2:172 build/C/man2/tee.2:121 build/C/man2/vmsplice.2:145
#, no-wrap
msgid "NOTES"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312 build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111 build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136 build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:112 build/C/man2/perf_event_open.2:1948 build/C/man2/perfmonctl.2:205 build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331 build/C/man2/ptrace.2:1927 build/C/man2/quotactl.2:507 build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:226 build/C/man2/tee.2:197 build/C/man2/vmsplice.2:154
+#: build/C/man2/arch_prctl.2:138 build/C/man2/futex.2:312 build/C/man2/get_robust_list.2:128 build/C/man2/getunwind.2:111 build/C/man2/kexec_load.2:159 build/C/man2/modify_ldt.2:136 build/C/man2/outb.2:96 build/C/man2/pciconfig_read.2:114 build/C/man2/perf_event_open.2:2176 build/C/man2/perfmonctl.2:205 build/C/man2/pivot_root.2:143 build/C/man2/process_vm_readv.2:331 build/C/man2/ptrace.2:2000 build/C/man2/quotactl.2:507 build/C/man2/sendfile.2:197 build/C/man2/set_tid_address.2:99 build/C/man2/splice.2:226 build/C/man2/tee.2:197 build/C/man2/vmsplice.2:154
#, no-wrap
msgid "SEE ALSO"
msgstr ""
msgstr ""
#. type: SH
-#: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:325 build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113 build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88 build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58 build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:114 build/C/man2/perf_event_open.2:1954 build/C/man2/perfmonctl.2:209 build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149 build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:1941 build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203 build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230 build/C/man2/tee.2:200 build/C/man2/vm86.2:74 build/C/man2/vmsplice.2:157
+#: build/C/man2/arch_prctl.2:145 build/C/man2/futex.2:326 build/C/man2/get_robust_list.2:137 build/C/man2/getunwind.2:113 build/C/man2/kexec_load.2:162 build/C/man2/lookup_dcookie.2:88 build/C/man2/modify_ldt.2:138 build/C/man2/nfsservctl.2:58 build/C/man2/outb.2:99 build/C/man2/pciconfig_read.2:116 build/C/man2/perf_event_open.2:2182 build/C/man2/perfmonctl.2:209 build/C/man2/personality.2:72 build/C/man2/pivot_root.2:149 build/C/man2/process_vm_readv.2:334 build/C/man2/ptrace.2:2014 build/C/man2/quotactl.2:512 build/C/man2/sendfile.2:203 build/C/man2/set_tid_address.2:102 build/C/man2/splice.2:230 build/C/man2/tee.2:200 build/C/man2/vm86.2:76 build/C/man2/vmsplice.2:157
#, no-wrap
msgid "COLOPHON"
msgstr ""
#. type: Plain text
-#: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:332 build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120 build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95 build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65 build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:121 build/C/man2/perf_event_open.2:1961 build/C/man2/perfmonctl.2:216 build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156 build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:1948 build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210 build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237 build/C/man2/tee.2:207 build/C/man2/vm86.2:81 build/C/man2/vmsplice.2:164
+#: build/C/man2/arch_prctl.2:152 build/C/man2/futex.2:333 build/C/man2/get_robust_list.2:144 build/C/man2/getunwind.2:120 build/C/man2/kexec_load.2:169 build/C/man2/lookup_dcookie.2:95 build/C/man2/modify_ldt.2:145 build/C/man2/nfsservctl.2:65 build/C/man2/outb.2:106 build/C/man2/pciconfig_read.2:123 build/C/man2/perf_event_open.2:2189 build/C/man2/perfmonctl.2:216 build/C/man2/personality.2:79 build/C/man2/pivot_root.2:156 build/C/man2/process_vm_readv.2:341 build/C/man2/ptrace.2:2021 build/C/man2/quotactl.2:519 build/C/man2/sendfile.2:210 build/C/man2/set_tid_address.2:109 build/C/man2/splice.2:237 build/C/man2/tee.2:207 build/C/man2/vm86.2:83 build/C/man2/vmsplice.2:164
msgid ""
-"This page is part of release 3.51 of the Linux I<man-pages> project. A "
+"This page is part of release 3.53 of the Linux I<man-pages> project. A "
"description of the project, and information about reporting bugs, can be "
-"found at http://www.kernel.org/doc/man-pages/."
+"found at \\%http://www.kernel.org/doc/man-pages/."
msgstr ""
#. type: TH
#. type: TH
#: build/C/man2/futex.2:53
#, no-wrap
-msgid "2013-03-15"
+msgid "2013-07-30"
msgstr ""
#. type: Plain text
msgstr ""
#. type: TP
-#: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126 build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447 build/C/man2/vm86.2:62
+#: build/C/man2/futex.2:267 build/C/man2/modify_ldt.2:126 build/C/man2/pciconfig_read.2:93 build/C/man2/quotactl.2:447 build/C/man2/vm86.2:64
#, no-wrap
msgid "B<ENOSYS>"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man2/futex.2:314
-msgid "B<futex>(7)"
+#: build/C/man2/futex.2:315
+msgid "B<restart_syscall>(2), B<futex>(7)"
msgstr ""
#. type: Plain text
-#: build/C/man2/futex.2:317
+#: build/C/man2/futex.2:318
msgid ""
"I<Fuss, Futexes and Furwocks: Fast Userlevel Locking in Linux> (proceedings "
"of the Ottawa Linux Symposium 2002), online at"
msgstr ""
#. type: Plain text
-#: build/C/man2/futex.2:320
+#: build/C/man2/futex.2:321
msgid ""
"E<.UR http://kernel.org\\:/doc\\:/ols\\:/2002\\:/ols2002-pages-479-495.pdf> "
"E<.UE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/futex.2:322
+#: build/C/man2/futex.2:323
msgid "Futex example library, futex-*.tar.bz2 at"
msgstr ""
#. type: Plain text
-#: build/C/man2/futex.2:325
+#: build/C/man2/futex.2:326
msgid ""
"E<.UR ftp://ftp.nl.kernel.org\\:/pub\\:/linux\\:/kernel\\:/people\\:/rusty/> "
"E<.UE>"
msgstr ""
#. type: TP
-#: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271 build/C/man2/ptrace.2:1766 build/C/man2/quotactl.2:461 build/C/man2/quotactl.2:504
+#: build/C/man2/get_robust_list.2:106 build/C/man2/process_vm_readv.2:271 build/C/man2/ptrace.2:1839 build/C/man2/quotactl.2:461 build/C/man2/quotactl.2:504
#, no-wrap
msgid "B<ESRCH>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110 build/C/man2/ptrace.2:1729 build/C/man2/quotactl.2:495
+#: build/C/man2/kexec_load.2:122 build/C/man2/pivot_root.2:110 build/C/man2/ptrace.2:1802 build/C/man2/quotactl.2:495
#, no-wrap
msgid "B<EBUSY>"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105 build/C/man2/vm86.2:57
+#: build/C/man2/nfsservctl.2:56 build/C/man2/pivot_root.2:105 build/C/man2/vm86.2:59
msgid ""
"On success, zero is returned. On error, -1 is returned, and I<errno> is set "
"appropriately."
msgstr ""
#. type: TP
-#: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1746 build/C/man2/sendfile.2:134
+#: build/C/man2/pciconfig_read.2:84 build/C/man2/ptrace.2:1819 build/C/man2/sendfile.2:134
#, no-wrap
msgid "B<EIO>"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man2/pciconfig_read.2:110
+#: build/C/man2/pciconfig_read.2:112
msgid ""
"User does not have the B<CAP_SYS_ADMIN> capability. This does not apply to "
"B<pciconfig_iobase>()."
msgstr ""
#. type: Plain text
-#: build/C/man2/pciconfig_read.2:112
+#: build/C/man2/pciconfig_read.2:114
msgid "These calls are Linux-specific, available since Linux 2.0.26/2.1.11."
msgstr ""
#. type: Plain text
-#: build/C/man2/pciconfig_read.2:114
+#: build/C/man2/pciconfig_read.2:116
msgid "B<capabilities>(7)"
msgstr ""
#. type: TH
#: build/C/man2/perf_event_open.2:27
#, no-wrap
-msgid "2013-02-04"
+msgid "2013-07-16"
msgstr ""
#. type: Plain text
"B<perf_event_open>() calls with I<group_fd> being set to the fd of the "
"group leader. (A single event on its own is created with I<group_fd> = -1 "
"and is considered to be a group with only 1 member.) An event group is "
-"scheduled onto the CPU as a unit: it will be put onto the CPU ionly if all "
-"of the events in the group can be put onto the CPU. This means that the "
-"values of the member events can be meaningfully compared, added, divided (to "
-"get ratios), etc., with each other, since they have counted events for the "
-"same set of executed instructions."
+"scheduled onto the CPU as a unit: it will be put onto the CPU only if all of "
+"the events in the group can be put onto the CPU. This means that the values "
+"of the member events can be meaningfully compared, added, divided (to get "
+"ratios), etc., with each other, since they have counted events for the same "
+"set of executed instructions."
msgstr ""
#. type: Plain text
#: build/C/man2/perf_event_open.2:152
-msgid "The I<flags> argument takes one of the following values:"
+msgid ""
+"The I<flags> argument is formed by ORing together zero or more of the "
+"following values:"
msgstr ""
#. type: TP
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1272
+#: build/C/man2/perf_event_open.2:261 build/C/man2/perf_event_open.2:1311
#, no-wrap
msgid "I<type>"
msgstr ""
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1588
+#: build/C/man2/perf_event_open.2:316 build/C/man2/perf_event_open.2:1770
#, no-wrap
msgid "I<size>"
msgstr ""
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:659
-msgid "Records the branch stack. See branch_sample_type."
+#: build/C/man2/perf_event_open.2:660
+msgid ""
+"This provides a record of recent branches, as provided by CPU branch "
+"sampling hardware (such as Intel Last Branch Record). Not all hardware "
+"supports this feature."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:664
+msgid ""
+"See the I<branch_sample_type> field for how to filter which branches are "
+"reported."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:659
+#: build/C/man2/perf_event_open.2:664
#, no-wrap
msgid "B<PERF_SAMPLE_REGS_USER> (Since Linux 3.7)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:662
-msgid "Records the current register state."
+#: build/C/man2/perf_event_open.2:668
+msgid ""
+"Records the current user-level CPU register state (the values in the process "
+"before the kernel was called)."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:662
+#: build/C/man2/perf_event_open.2:668
#, no-wrap
msgid "B<PERF_SAMPLE_STACK_USER> (Since Linux 3.7)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:665 build/C/man2/perf_event_open.2:1786 build/C/man2/perf_event_open.2:1803
-msgid "[To be documented]"
+#: build/C/man2/perf_event_open.2:671
+msgid "Records the user level stack, allowing stack unwinding."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:666
+#: build/C/man2/perf_event_open.2:671
+#, no-wrap
+msgid "B<PERF_SAMPLE_WEIGHT> (Since Linux 3.10)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:677
+msgid ""
+"Records a hardware provided weight value that expresses how costly the "
+"sampled event was. This allows the hardware to highlight expensive events "
+"in a profile."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:677
+#, no-wrap
+msgid "B<PERF_SAMPLE_DATA_SRC> (Since Linux 3.10)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:683
+msgid ""
+"Records the data source: where in the memory hierarchy the data associated "
+"with the sampled instruction came from. This is only available if the "
+"underlying hardware supports this feature."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:684
#, no-wrap
msgid "I<read_format>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:673
+#: build/C/man2/perf_event_open.2:691
msgid ""
"This field specifies the format of the data returned by B<read>(2) on a "
"B<perf_event_open>() file descriptor."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:674
+#: build/C/man2/perf_event_open.2:692
#, no-wrap
msgid "B<PERF_FORMAT_TOTAL_TIME_ENABLED>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:681
+#: build/C/man2/perf_event_open.2:699
msgid ""
"Adds the 64-bit I<time_enabled> field. This can be used to calculate "
"estimated totals if the PMU is overcommitted and multiplexing is happening."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:681
+#: build/C/man2/perf_event_open.2:699
#, no-wrap
msgid "B<PERF_FORMAT_TOTAL_TIME_RUNNING>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:688
+#: build/C/man2/perf_event_open.2:706
msgid ""
"Adds the 64-bit I<time_running> field. This can be used to calculate "
"estimated totals if the PMU is overcommitted and multiplexing is happening."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:688
+#: build/C/man2/perf_event_open.2:706
#, no-wrap
msgid "B<PERF_FORMAT_ID>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:691
+#: build/C/man2/perf_event_open.2:709
msgid "Adds a 64-bit unique value that corresponds to the event group."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:691
+#: build/C/man2/perf_event_open.2:709
#, no-wrap
msgid "B<PERF_FORMAT_GROUP>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:694
+#: build/C/man2/perf_event_open.2:712
msgid "Allows all counter values in an event group to be read with one read."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:695
+#: build/C/man2/perf_event_open.2:713
#, no-wrap
msgid "I<disabled>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:705
+#: build/C/man2/perf_event_open.2:723
msgid ""
"The I<disabled> bit specifies whether the counter starts out disabled or "
"enabled. If disabled, the event can later be enabled by B<ioctl>(2), "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:705
+#: build/C/man2/perf_event_open.2:723
#, no-wrap
msgid "I<inherit>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:714
+#: build/C/man2/perf_event_open.2:732
msgid ""
"The I<inherit> bit specifies that this counter should count events of child "
"tasks as well as the task specified. This applies only to new children, not "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:719
+#: build/C/man2/perf_event_open.2:737
msgid ""
"Inherit does not work for some combinations of I<read_format>s, such as "
"B<PERF_FORMAT_GROUP>."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:719
+#: build/C/man2/perf_event_open.2:737
#, no-wrap
msgid "I<pinned>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:732
+#: build/C/man2/perf_event_open.2:750
msgid ""
"The I<pinned> bit specifies that the counter should always be on the CPU if "
"at all possible. It applies only to hardware counters and only to group "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:732
+#: build/C/man2/perf_event_open.2:750
#, no-wrap
msgid "I<exclusive>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:741
+#: build/C/man2/perf_event_open.2:759
msgid ""
"The I<exclusive> bit specifies that when this counter's group is on the CPU, "
"it should be the only group using the CPU's counters. In the future this "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:741
+#: build/C/man2/perf_event_open.2:759
#, no-wrap
msgid "I<exclude_user>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:744
+#: build/C/man2/perf_event_open.2:762
msgid "If this bit is set, the count excludes events that happen in user space."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:744
+#: build/C/man2/perf_event_open.2:762
#, no-wrap
msgid "I<exclude_kernel>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:747
+#: build/C/man2/perf_event_open.2:765
msgid "If this bit is set, the count excludes events that happen in kernel-space."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:747
+#: build/C/man2/perf_event_open.2:765
#, no-wrap
msgid "I<exclude_hv>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:755
+#: build/C/man2/perf_event_open.2:773
msgid ""
"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 "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:755
+#: build/C/man2/perf_event_open.2:773
#, no-wrap
msgid "I<exclude_idle>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:758
+#: build/C/man2/perf_event_open.2:776
msgid "If set, don't count when the CPU is idle."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:758
+#: build/C/man2/perf_event_open.2:776
#, no-wrap
msgid "I<mmap>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:763
+#: build/C/man2/perf_event_open.2:781
msgid "The I<mmap> bit enables recording of exec mmap events."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:763
+#: build/C/man2/perf_event_open.2:781
#, no-wrap
msgid "I<comm>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:774
+#: build/C/man2/perf_event_open.2:792
msgid ""
"The I<comm> bit enables tracking of process command name as modified by the "
"I<exec>(2) and I<prctl>(PR_SET_NAME) system calls. Unfortunately for "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:774
+#: build/C/man2/perf_event_open.2:792
#, no-wrap
msgid "I<freq>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:781
+#: build/C/man2/perf_event_open.2:799
msgid ""
"If this bit is set, then I<sample_frequency> not I<sample_period> is used "
"when setting up the sampling interval."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:781
+#: build/C/man2/perf_event_open.2:799
#, no-wrap
msgid "I<inherit_stat>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:788
+#: build/C/man2/perf_event_open.2:806
msgid ""
"This bit enables saving of event counts on context switch for inherited "
"tasks. This is meaningful only if the I<inherit> field is set."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:788
+#: build/C/man2/perf_event_open.2:806
#, no-wrap
msgid "I<enable_on_exec>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:793
+#: build/C/man2/perf_event_open.2:811
msgid ""
"If this bit is set, a counter is automatically enabled after a call to "
"B<exec>(2)."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:793
+#: build/C/man2/perf_event_open.2:811
#, no-wrap
msgid "I<task>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:797
+#: build/C/man2/perf_event_open.2:815
msgid ""
"If this bit is set, then fork/exit notifications are included in the ring "
"buffer."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:797
+#: build/C/man2/perf_event_open.2:815
#, no-wrap
msgid "I<watermark>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:805
+#: build/C/man2/perf_event_open.2:823
msgid ""
"If set, have a sampling interrupt happen when we cross the "
"I<wakeup_watermark> boundary. Otherwise interrupts happen after "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:805
+#: build/C/man2/perf_event_open.2:823
#, no-wrap
msgid "I<precise_ip> (Since Linux 2.6.35)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:815
+#: build/C/man2/perf_event_open.2:833
msgid ""
"This controls the amount of skid. Skid is how many instructions execute "
"between an event of interest happening and the kernel being able to stop and "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:817
+#: build/C/man2/perf_event_open.2:835
msgid "The values of this are the following:"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:818
+#: build/C/man2/perf_event_open.2:836
#, no-wrap
msgid "0 -"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:822
+#: build/C/man2/perf_event_open.2:840
msgid "B<SAMPLE_IP> can have arbitrary skid"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:822
+#: build/C/man2/perf_event_open.2:840
#, no-wrap
msgid "1 -"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:826
+#: build/C/man2/perf_event_open.2:844
msgid "B<SAMPLE_IP> must have constant skid"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:826
+#: build/C/man2/perf_event_open.2:844
#, no-wrap
msgid "2 -"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:830
+#: build/C/man2/perf_event_open.2:848
msgid "B<SAMPLE_IP> requested to have 0 skid"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:830
+#: build/C/man2/perf_event_open.2:848
#, no-wrap
msgid "3 -"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:836
+#: build/C/man2/perf_event_open.2:854
msgid "B<SAMPLE_IP> must have 0 skid. See also B<PERF_RECORD_MISC_EXACT_IP>."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:837
+#: build/C/man2/perf_event_open.2:855
#, no-wrap
msgid "I<mmap_data> (Since Linux 2.6.36)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:843
+#: build/C/man2/perf_event_open.2:861
msgid ""
"The counterpart of the I<mmap> field, but enables including data mmap events "
"in the ring-buffer."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:843
+#: build/C/man2/perf_event_open.2:861
#, no-wrap
msgid "I<sample_id_all> (Since Linux 2.6.38)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:851
+#: build/C/man2/perf_event_open.2:869
msgid ""
"If set, then TID, TIME, ID, CPU, and STREAM_ID can additionally be included "
"in non-B<PERF_RECORD_SAMPLE>s if the corresponding I<sample_type> is "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:851
+#: build/C/man2/perf_event_open.2:869
#, no-wrap
msgid "I<exclude_host> (Since Linux 3.2)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:854
+#: build/C/man2/perf_event_open.2:872
msgid "Do not measure time spent in VM host"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:854
+#: build/C/man2/perf_event_open.2:872
#, no-wrap
msgid "I<exclude_guest> (Since Linux 3.2)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:857
+#: build/C/man2/perf_event_open.2:875
msgid "Do not measure time spent in VM guest"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:857
+#: build/C/man2/perf_event_open.2:875
#, no-wrap
msgid "I<exclude_callchain_kernel> (Since Linux 3.7)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:860
+#: build/C/man2/perf_event_open.2:878
msgid "Do not include kernel callchains."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:860
+#: build/C/man2/perf_event_open.2:878
#, no-wrap
msgid "I<exclude_callchain_user> (Since Linux 3.7)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:863
+#: build/C/man2/perf_event_open.2:881
msgid "Do not include user callchains."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:863
+#: build/C/man2/perf_event_open.2:881
#, no-wrap
msgid "I<wakeup_events>, I<wakeup_watermark>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:873
+#: build/C/man2/perf_event_open.2:891
msgid ""
"This union sets how many samples (I<wakeup_events>) or bytes "
"(I<wakeup_watermark>) happen before an overflow signal happens. Which one "
"is used is selected by the I<watermark> bitflag."
msgstr ""
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:901
+msgid ""
+"I<wakeup_events> only counts B<PERF_RECORD_SAMPLE> record types. To receive "
+"a signal for every incoming B<PERF_RECORD> type set I<wakeup_watermark> to "
+"1."
+msgstr ""
+
#. type: TP
-#: build/C/man2/perf_event_open.2:873
+#: build/C/man2/perf_event_open.2:901
#, no-wrap
msgid "I<bp_type> (Since Linux 2.6.33)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:877
+#: build/C/man2/perf_event_open.2:905
msgid "This chooses the breakpoint type. It is one of:"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:878
+#: build/C/man2/perf_event_open.2:906
#, no-wrap
msgid "B<HW_BREAKPOINT_EMPTY>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:881
+#: build/C/man2/perf_event_open.2:909
msgid "no breakpoint"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:881
+#: build/C/man2/perf_event_open.2:909
#, no-wrap
msgid "B<HW_BREAKPOINT_R>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:884
+#: build/C/man2/perf_event_open.2:912
msgid "count when we read the memory location"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:884
+#: build/C/man2/perf_event_open.2:912
#, no-wrap
msgid "B<HW_BREAKPOINT_W>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:887
+#: build/C/man2/perf_event_open.2:915
msgid "count when we write the memory location"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:887
+#: build/C/man2/perf_event_open.2:915
#, no-wrap
msgid "B<HW_BREAKPOINT_RW>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:890
+#: build/C/man2/perf_event_open.2:918
msgid "count when we read or write the memory location"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:890
+#: build/C/man2/perf_event_open.2:918
#, no-wrap
msgid "B<HW_BREAKPOINT_X>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:893
+#: build/C/man2/perf_event_open.2:921
msgid "count when we execute code at the memory location"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:902
+#: build/C/man2/perf_event_open.2:930
msgid ""
"The values can be combined via a bitwise or, but the combination of "
"B<HW_BREAKPOINT_R> or B<HW_BREAKPOINT_W> with B<HW_BREAKPOINT_X> is not "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:903
+#: build/C/man2/perf_event_open.2:931
#, no-wrap
msgid "I<bp_addr> (Since Linux 2.6.33)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:910
+#: build/C/man2/perf_event_open.2:938
msgid ""
"I<bp_addr> address of the breakpoint. For execution breakpoints this is the "
"memory address of the instruction of interest; for read and write "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:910
+#: build/C/man2/perf_event_open.2:938
#, no-wrap
msgid "I<config1> (Since Linux 2.6.39)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:917
+#: build/C/man2/perf_event_open.2:945
msgid ""
"I<config1> is used for setting events that need an extra register or "
"otherwise do not fit in the regular config field. Raw OFFCORE_EVENTS on "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:917
+#: build/C/man2/perf_event_open.2:945
#, no-wrap
msgid "I<bp_len> (Since Linux 2.6.33)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:931
+#: build/C/man2/perf_event_open.2:959
msgid ""
"I<bp_len> is the length of the breakpoint being measured if I<type> is "
"B<PERF_TYPE_BREAKPOINT>. Options are B<HW_BREAKPOINT_LEN_1>, "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:931
+#: build/C/man2/perf_event_open.2:959
#, no-wrap
msgid "I<config2> (Since Linux 2.6.39)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:938
+#: build/C/man2/perf_event_open.2:966
msgid "I<config2> is a further extension of the I<config1> field."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:938
+#: build/C/man2/perf_event_open.2:966
#, no-wrap
msgid "I<branch_sample_type> (Since Linux 3.4)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:942
+#: build/C/man2/perf_event_open.2:979
msgid ""
-"This is used with the CPUs hardware branch sampling, if available. It can "
-"have one of the following values:"
+"If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then this specifies what branches "
+"to include in the branch record. If the user does not set privilege level "
+"explicitly, the kernel will use the event's privilege level. Event and "
+"branch privilege levels do not have to match. The value is formed by ORing "
+"together zero or more of the following values, although "
+"B<PERF_SAMPLE_BRANCH_ANY> covers all branch types."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:943
+#: build/C/man2/perf_event_open.2:980
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_USER>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:946
+#: build/C/man2/perf_event_open.2:983
msgid "Branch target is in user space"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:946
+#: build/C/man2/perf_event_open.2:983
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_KERNEL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:949
+#: build/C/man2/perf_event_open.2:986
msgid "Branch target is in kernel space"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:949
+#: build/C/man2/perf_event_open.2:986
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_HV>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:952
+#: build/C/man2/perf_event_open.2:989
msgid "Branch target is in hypervisor"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:952
+#: build/C/man2/perf_event_open.2:989
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_ANY>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:955
+#: build/C/man2/perf_event_open.2:992
msgid "Any branch type."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:955
+#: build/C/man2/perf_event_open.2:992
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_ANY_CALL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:958
+#: build/C/man2/perf_event_open.2:995
msgid "Any call branch"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:958
+#: build/C/man2/perf_event_open.2:995
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_ANY_RETURN>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:961
+#: build/C/man2/perf_event_open.2:998
msgid "Any return branch"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:961
+#: build/C/man2/perf_event_open.2:998
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_IND_CALL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:964
+#: build/C/man2/perf_event_open.2:1001
msgid "Indirect calls"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:964
+#: build/C/man2/perf_event_open.2:1001
#, no-wrap
msgid "B<PERF_SAMPLE_BRANCH_PLM_ALL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:967
+#: build/C/man2/perf_event_open.2:1004
msgid "User, kernel, and hv"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:968
+#: build/C/man2/perf_event_open.2:1005
#, no-wrap
msgid "I<sample_regs_user> (Since Linux 3.7)"
msgstr ""
-#. FIXME: The following reference seems to be not quite right:
#. type: Plain text
-#: build/C/man2/perf_event_open.2:974
+#: build/C/man2/perf_event_open.2:1011
msgid ""
-"This defines the set of user registers to dump on samples. See "
-"I<asm/perf_regs.h>."
+"This bitmask defines the set of user CPU registers to dump on samples. The "
+"layout of the register mask is architecture specific and described in the "
+"kernel header I<arch/ARCH/include/uapi/asm/perf_regs.h>."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:974
+#: build/C/man2/perf_event_open.2:1011
#, no-wrap
msgid "I<sample_stack_user> (Since Linux 3.7)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:977
-msgid "This defines the size of the user stack to dump on samples."
+#: build/C/man2/perf_event_open.2:1016
+msgid ""
+"This defines the size of the user stack to dump if B<PERF_SAMPLE_STACK_USER> "
+"is specified."
msgstr ""
#. type: SS
-#: build/C/man2/perf_event_open.2:977
+#: build/C/man2/perf_event_open.2:1016
#, no-wrap
msgid "Reading results"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:987
+#: build/C/man2/perf_event_open.2:1026
msgid ""
"Once a B<perf_event_open>() file descriptor has been opened, the values of "
"the events can be read from the file descriptor. The values that are there "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:992
+#: build/C/man2/perf_event_open.2:1031
msgid ""
"If you attempt to read into a buffer that is not big enough to hold the data "
"B<ENOSPC> is returned"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:994
+#: build/C/man2/perf_event_open.2:1033
msgid "Here is the layout of the data returned by a read:"
msgstr ""
#. type: IP
-#: build/C/man2/perf_event_open.2:994 build/C/man2/perf_event_open.2:1012 build/C/man2/ptrace.2:1553 build/C/man2/ptrace.2:1563 build/C/man2/ptrace.2:1571 build/C/man2/ptrace.2:1577 build/C/man2/ptrace.2:1706
+#: build/C/man2/perf_event_open.2:1033 build/C/man2/perf_event_open.2:1051 build/C/man2/ptrace.2:1619 build/C/man2/ptrace.2:1629 build/C/man2/ptrace.2:1637 build/C/man2/ptrace.2:1643 build/C/man2/ptrace.2:1772
#, no-wrap
msgid "*"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:998
+#: build/C/man2/perf_event_open.2:1037
msgid ""
"If B<PERF_FORMAT_GROUP> was specified to allow reading all events in a group "
"at once:"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1010
+#: build/C/man2/perf_event_open.2:1049
#, no-wrap
msgid ""
"struct read_format {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1018
+#: build/C/man2/perf_event_open.2:1057
msgid "If B<PERF_FORMAT_GROUP> was I<not> specified:"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1027
+#: build/C/man2/perf_event_open.2:1066
#, no-wrap
msgid ""
"struct read_format {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1031
+#: build/C/man2/perf_event_open.2:1070
msgid "The values read are as follows:"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1031
+#: build/C/man2/perf_event_open.2:1070
#, no-wrap
msgid "I<nr>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1037
+#: build/C/man2/perf_event_open.2:1076
msgid ""
"The number of events in this file descriptor. Only available if "
"B<PERF_FORMAT_GROUP> was specified."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1037
+#: build/C/man2/perf_event_open.2:1076
#, no-wrap
msgid "I<time_enabled>, I<time_running>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1049
+#: build/C/man2/perf_event_open.2:1088
msgid ""
"Total time the event was enabled and running. Normally these are the same. "
"If more events are started than available counter slots on the PMU, then "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1049
+#: build/C/man2/perf_event_open.2:1088
#, no-wrap
msgid "I<value>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1052
+#: build/C/man2/perf_event_open.2:1091
msgid "An unsigned 64-bit value containing the counter result."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1052 build/C/man2/perf_event_open.2:1316 build/C/man2/perf_event_open.2:1451
+#: build/C/man2/perf_event_open.2:1091 build/C/man2/perf_event_open.2:1355 build/C/man2/perf_event_open.2:1492
#, no-wrap
msgid "I<id>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1058
+#: build/C/man2/perf_event_open.2:1097
msgid ""
"A globally unique value for this particular event, only there if "
"B<PERF_FORMAT_ID> was specified in I<read_format>."
msgstr ""
#. type: SS
-#: build/C/man2/perf_event_open.2:1058
+#: build/C/man2/perf_event_open.2:1097
#, no-wrap
msgid "MMAP layout"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1068
+#: build/C/man2/perf_event_open.2:1107
msgid ""
"When using B<perf_event_open>() in sampled mode, asynchronous events (like "
"counter overflow or B<PROT_EXEC> mmap tracking) are logged into a "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1074
+#: build/C/man2/perf_event_open.2:1113
msgid ""
"The mmap size should be 1+2^n pages, where the first page is a metadata page "
"(I<struct perf_event_mmap_page>) that contains various bits of information "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1077
+#: build/C/man2/perf_event_open.2:1116
msgid ""
"Before kernel 2.6.39, there is a bug that means you must allocate a mmap "
"ring buffer when sampling even if you do not plan to access it."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1079
+#: build/C/man2/perf_event_open.2:1118
msgid "The structure of the first metadata mmap page is as follows:"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1103
+#: build/C/man2/perf_event_open.2:1142
#, no-wrap
msgid ""
"struct perf_event_mmap_page {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1109
+#: build/C/man2/perf_event_open.2:1148
msgid ""
"The following looks at the fields in the I<perf_event_mmap_page> structure "
"in more detail:"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1109
+#: build/C/man2/perf_event_open.2:1148
#, no-wrap
msgid "I<version>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1112
+#: build/C/man2/perf_event_open.2:1151
msgid "Version number of this structure."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1112
+#: build/C/man2/perf_event_open.2:1151
#, no-wrap
msgid "I<compat_version>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1115
+#: build/C/man2/perf_event_open.2:1154
msgid "The lowest version this is compatible with."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1115
+#: build/C/man2/perf_event_open.2:1154
#, no-wrap
msgid "I<lock>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1118
+#: build/C/man2/perf_event_open.2:1157
msgid "A seqlock for synchronization."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1118
+#: build/C/man2/perf_event_open.2:1157
#, no-wrap
msgid "I<index>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1121
+#: build/C/man2/perf_event_open.2:1160
msgid "A unique hardware counter identifier."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1121
+#: build/C/man2/perf_event_open.2:1160
#, no-wrap
msgid "I<offset>"
msgstr ""
#. FIXME clarify
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1125
+#: build/C/man2/perf_event_open.2:1164
msgid "Add this to hardware counter value??"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1125
+#: build/C/man2/perf_event_open.2:1164
#, no-wrap
msgid "I<time_enabled>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1128
+#: build/C/man2/perf_event_open.2:1167
msgid "Time the event was active."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1128
+#: build/C/man2/perf_event_open.2:1167
#, no-wrap
msgid "I<time_running>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1131
+#: build/C/man2/perf_event_open.2:1170
msgid "Time the event was running."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1131
+#: build/C/man2/perf_event_open.2:1170
#, no-wrap
msgid "I<cap_usr_time>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1134
+#: build/C/man2/perf_event_open.2:1173
msgid "User time capability"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1134
+#: build/C/man2/perf_event_open.2:1173
#, no-wrap
msgid "I<cap_usr_rdpmc>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1139
+#: build/C/man2/perf_event_open.2:1178
msgid ""
"If the hardware supports user-space read of performance counters without "
"syscall (this is the \"rdpmc\" instruction on x86), then the following code "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1146
+#: build/C/man2/perf_event_open.2:1185
#, no-wrap
msgid ""
"u32 seq, time_mult, time_shift, idx, width;\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1152
+#: build/C/man2/perf_event_open.2:1191
#, no-wrap
msgid ""
"do {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1159
+#: build/C/man2/perf_event_open.2:1198
#, no-wrap
msgid ""
" if (pc-E<gt>cap_usr_time && enabled != running) {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1162
+#: build/C/man2/perf_event_open.2:1201
#, no-wrap
msgid ""
" idx = pc-E<gt>index;\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1167
+#: build/C/man2/perf_event_open.2:1206
#, no-wrap
msgid ""
" if (pc-E<gt>cap_usr_rdpmc && idx) {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1170
+#: build/C/man2/perf_event_open.2:1209
#, no-wrap
msgid ""
" barrier();\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1172
+#: build/C/man2/perf_event_open.2:1211
#, no-wrap
msgid "I<pmc_width>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1179
+#: build/C/man2/perf_event_open.2:1218
msgid ""
"If I<cap_usr_rdpmc>, this field provides the bit-width of the value read "
"using the rdpmc or equivalent instruction. This can be used to sign extend "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1185
+#: build/C/man2/perf_event_open.2:1224
#, no-wrap
msgid ""
"pmc E<lt>E<lt>= 64 - pmc_width;\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1187
+#: build/C/man2/perf_event_open.2:1226
#, no-wrap
msgid "I<time_shift>, I<time_mult>, I<time_offset>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1194
+#: build/C/man2/perf_event_open.2:1233
msgid ""
"If I<cap_usr_time>, these fields can be used to compute the time delta since "
"time_enabled (in nanoseconds) using rdtsc or similar."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1202
+#: build/C/man2/perf_event_open.2:1241
#, no-wrap
msgid ""
" u64 quot, rem;\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1214
+#: build/C/man2/perf_event_open.2:1253
msgid ""
"Where I<time_offset>, I<time_mult>, I<time_shift>, and I<cyc> are read in "
"the seqcount loop described above. This delta can then be added to enabled "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1222
+#: build/C/man2/perf_event_open.2:1261
#, no-wrap
msgid ""
" enabled += delta;\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1223
+#: build/C/man2/perf_event_open.2:1262
#, no-wrap
msgid "I<data_head>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1229
+#: build/C/man2/perf_event_open.2:1268
msgid ""
"This points to the head of the data section. The value continuously "
"increases, it does not wrap. The value needs to be manually wrapped by the "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1232
+#: build/C/man2/perf_event_open.2:1271
msgid ""
"On SMP-capable platforms, after reading the data_head value, user space "
"should issue an rmb()."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1232
+#: build/C/man2/perf_event_open.2:1271
#, no-wrap
msgid "I<data_tail;>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1240
+#: build/C/man2/perf_event_open.2:1279
msgid ""
"When the mapping is B<PROT_WRITE>, the I<data_tail> value should be written "
"by user space to reflect the last read data. In this case the kernel will "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1242
+#: build/C/man2/perf_event_open.2:1281
msgid "The following 2^n ring-buffer pages have the layout described below."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1256
+#: build/C/man2/perf_event_open.2:1295
msgid ""
"If I<perf_event_attr.sample_id_all> is set, then all event types will have "
"the sample_type selected fields related to where/when (identity) an event "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1258
+#: build/C/man2/perf_event_open.2:1297
msgid "The mmap values start with a header:"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1266
+#: build/C/man2/perf_event_open.2:1305
#, no-wrap
msgid ""
"struct perf_event_header {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1272
+#: build/C/man2/perf_event_open.2:1311
msgid "Below, we describe the I<perf_event_header> fields in more detail."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1281
+#: build/C/man2/perf_event_open.2:1320
msgid ""
"The I<type> value is one of the below. The values in the corresponding "
"record (that follows the header) depend on the I<type> selected as shown."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1282
+#: build/C/man2/perf_event_open.2:1321
#, no-wrap
msgid "B<PERF_RECORD_MMAP>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1289
+#: build/C/man2/perf_event_open.2:1328
msgid ""
"The MMAP events record the B<PROT_EXEC> mappings so that we can correlate "
"user-space IPs to code. They have the following structure:"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1300
+#: build/C/man2/perf_event_open.2:1339
#, no-wrap
msgid ""
"struct {\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1302
+#: build/C/man2/perf_event_open.2:1341
#, no-wrap
msgid "B<PERF_RECORD_LOST>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1305
+#: build/C/man2/perf_event_open.2:1344
msgid "This record indicates when events are lost."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1313
+#: build/C/man2/perf_event_open.2:1352
#, no-wrap
msgid ""
"struct {\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1319
+#: build/C/man2/perf_event_open.2:1358
msgid "is the unique event ID for the samples that were lost."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1319
+#: build/C/man2/perf_event_open.2:1358
#, no-wrap
msgid "I<lost>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1322
+#: build/C/man2/perf_event_open.2:1361
msgid "is the number of events that were lost."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1323
+#: build/C/man2/perf_event_open.2:1362
#, no-wrap
msgid "B<PERF_RECORD_COMM>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1326
+#: build/C/man2/perf_event_open.2:1365
msgid "This record indicates a change in the process name."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1334
+#: build/C/man2/perf_event_open.2:1373
#, no-wrap
msgid ""
"struct {\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1336
+#: build/C/man2/perf_event_open.2:1375
#, no-wrap
msgid "B<PERF_RECORD_EXIT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1339
+#: build/C/man2/perf_event_open.2:1378
msgid "This record indicates a process exit event."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1348 build/C/man2/perf_event_open.2:1376
+#: build/C/man2/perf_event_open.2:1387 build/C/man2/perf_event_open.2:1415
#, no-wrap
msgid ""
"struct {\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1350
+#: build/C/man2/perf_event_open.2:1389
#, no-wrap
msgid "B<PERF_RECORD_THROTTLE>, B<PERF_RECORD_UNTHROTTLE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1353
+#: build/C/man2/perf_event_open.2:1392
msgid "This record indicates a throttle/unthrottle event."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1362
+#: build/C/man2/perf_event_open.2:1401
#, no-wrap
msgid ""
"struct {\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1364
+#: build/C/man2/perf_event_open.2:1403
#, no-wrap
msgid "B<PERF_RECORD_FORK>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1367
+#: build/C/man2/perf_event_open.2:1406
msgid "This record indicates a fork event."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1378
+#: build/C/man2/perf_event_open.2:1417
#, no-wrap
msgid "B<PERF_RECORD_READ>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1381
+#: build/C/man2/perf_event_open.2:1420
msgid "This record indicates a read event."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1389
+#: build/C/man2/perf_event_open.2:1428
#, no-wrap
msgid ""
"struct {\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1391
+#: build/C/man2/perf_event_open.2:1430
#, no-wrap
msgid "B<PERF_RECORD_SAMPLE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1394
+#: build/C/man2/perf_event_open.2:1433
msgid "This record indicates a sample."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1422
+#: build/C/man2/perf_event_open.2:1463
#, no-wrap
msgid ""
"struct {\n"
" u64 size; /* if PERF_SAMPLE_STACK_USER */\n"
" char data[size]; /* if PERF_SAMPLE_STACK_USER */\n"
" u64 dyn_size; /* if PERF_SAMPLE_STACK_USER */\n"
+" u64 weight; /* if PERF_SAMPLE_WEIGHT */\n"
+" u64 data_src; /* if PERF_SAMPLE_DATA_SRC */\n"
"};\n"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1424
+#: build/C/man2/perf_event_open.2:1465
#, no-wrap
msgid "I<ip>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1430
+#: build/C/man2/perf_event_open.2:1471
msgid ""
"If B<PERF_SAMPLE_IP> is enabled, then a 64-bit instruction pointer value is "
"included."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1430
+#: build/C/man2/perf_event_open.2:1471
#, no-wrap
msgid "I<pid>, I<tid>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1436
+#: build/C/man2/perf_event_open.2:1477
msgid ""
"If B<PERF_SAMPLE_TID> is enabled, then a 32-bit process ID and 32-bit thread "
"ID are included."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1436
+#: build/C/man2/perf_event_open.2:1477
#, no-wrap
msgid "I<time>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1444
+#: build/C/man2/perf_event_open.2:1485
msgid ""
"If B<PERF_SAMPLE_TIME> is enabled, then a 64-bit timestamp is included. "
"This is obtained via local_clock() which is a hardware timestamp if "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1444
+#: build/C/man2/perf_event_open.2:1485
#, no-wrap
msgid "I<addr>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1451
+#: build/C/man2/perf_event_open.2:1492
msgid ""
"If B<PERF_SAMPLE_ADDR> is enabled, then a 64-bit address is included. This "
"is usually the address of a tracepoint, breakpoint, or software event; "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1459
+#: build/C/man2/perf_event_open.2:1500
msgid ""
"If B<PERF_SAMPLE_ID> is enabled, a 64-bit unique ID is included. If the "
"event is a member of an event group, the group leader ID is returned. This "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1459
+#: build/C/man2/perf_event_open.2:1500
#, no-wrap
msgid "I<stream_id>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1469
+#: build/C/man2/perf_event_open.2:1510
msgid ""
"If B<PERF_SAMPLE_STREAM_ID> is enabled, a 64-bit unique ID is included. "
"Unlike B<PERF_SAMPLE_ID> the actual ID is returned, not the group leader. "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1469
+#: build/C/man2/perf_event_open.2:1510
#, no-wrap
msgid "I<cpu>, I<res>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1476
+#: build/C/man2/perf_event_open.2:1517
msgid ""
"If B<PERF_SAMPLE_CPU> is enabled, this is a 32-bit value indicating which "
"CPU was being used, in addition to a reserved (unused) 32-bit value."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1476
+#: build/C/man2/perf_event_open.2:1517
#, no-wrap
msgid "I<period>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1482
+#: build/C/man2/perf_event_open.2:1523
msgid ""
"If B<PERF_SAMPLE_PERIOD> is enabled, a 64-bit value indicating the current "
"sampling period is written."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1482
+#: build/C/man2/perf_event_open.2:1523
#, no-wrap
msgid "I<v>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1493
+#: build/C/man2/perf_event_open.2:1534
msgid ""
"If B<PERF_SAMPLE_READ> is enabled, a structure of type read_format is "
"included which has values for all events in the event group. The values "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1493
+#: build/C/man2/perf_event_open.2:1534
#, no-wrap
msgid "I<nr>, I<ips[nr]>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1501
+#: build/C/man2/perf_event_open.2:1542
msgid ""
"If B<PERF_SAMPLE_CALLCHAIN> is enabled, then a 64-bit number is included "
"which indicates how many following 64-bit instruction pointers will follow. "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1501
+#: build/C/man2/perf_event_open.2:1542
#, no-wrap
msgid "I<size>, I<data[size]>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1508
+#: build/C/man2/perf_event_open.2:1549
msgid ""
"If B<PERF_SAMPLE_RAW> is enabled, then a 32-bit value indicating size is "
"included followed by an array of 8-bit values of length size. The values "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1513
+#: build/C/man2/perf_event_open.2:1554
msgid ""
"This RAW record data is opaque with respect to the ABI. The ABI doesn't "
"make any promises with respect to the stability of its content, it may vary "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1513
+#: build/C/man2/perf_event_open.2:1554
#, no-wrap
msgid "I<bnr>, I<lbr[bnr]>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1524
+#: build/C/man2/perf_event_open.2:1563
msgid ""
"If B<PERF_SAMPLE_BRANCH_STACK> is enabled, then a 64-bit value indicating "
"the number of records is included, followed by I<bnr> I<perf_branch_entry> "
-"structures. These structures have from, to, and flags values indicating the "
-"from and to addresses from the branches on the callstack."
+"structures which each include the fields:"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1524
+#: build/C/man2/perf_event_open.2:1564
+#, no-wrap
+msgid "I<from>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1567
+msgid "indicating the source instruction (may not be a branch)"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1567
+#, no-wrap
+msgid "I<to>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1570
+msgid "the branch target"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1570
+#, no-wrap
+msgid "I<mispred>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1573
+msgid "the branch target was mispredicted"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1573
+#, no-wrap
+msgid "I<predicted>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1576
+msgid "the branch target was predicted."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1579
+msgid ""
+"The entries are from most to least recent, so the first entry has the most "
+"recent branch."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1586
+msgid ""
+"Support for I<mispred> and I<predicted> is optional; if not supported, both "
+"values will be 0."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1587
#, no-wrap
msgid "I<abi>, I<regs[weight(mask)]>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1530
-msgid "If B<PERF_SAMPLE_REGS_USER> is enabled, then [to be documented]."
+#: build/C/man2/perf_event_open.2:1592
+msgid ""
+"If B<PERF_SAMPLE_REGS_USER> is enabled, then the user CPU registers are "
+"recorded."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1536
+#: build/C/man2/perf_event_open.2:1598
msgid ""
"The I<abi> field is one of B<PERF_SAMPLE_REGS_ABI_NONE>, "
"B<PERF_SAMPLE_REGS_ABI_32> or B<PERF_SAMPLE_REGS_ABI_64>."
msgstr ""
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1608
+msgid ""
+"The I<regs> field is an array of the CPU registers that were specified by "
+"the I<sample_regs_user> attr field. The number of values is the number of "
+"bits set in the I<sample_regs_user> bitmask."
+msgstr ""
+
#. type: TP
-#: build/C/man2/perf_event_open.2:1536
+#: build/C/man2/perf_event_open.2:1608
#, no-wrap
msgid "I<size>, I<data[size]>, I<dyn_size>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1542
-msgid "If B<PERF_SAMPLE_STACK_USER> is enabled, then [to be documented]."
+#: build/C/man2/perf_event_open.2:1622
+msgid ""
+"If B<PERF_SAMPLE_STACK_USER> is enabled, then record the user stack to "
+"enable backtracing. I<size> is the size requested by the user in "
+"I<stack_user_size> or else the maximum record size. I<data> is the stack "
+"data. I<dyn_size> is the amount of data actually dumped (can be less than "
+"I<size>)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1622
+#, no-wrap
+msgid "I<weight>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1630
+msgid ""
+"If B<PERF_SAMPLE_WEIGHT> is enabled, then a 64 bit value provided by the "
+"hardware is recorded that indicates how costly the event was. This allows "
+"expensive events to stand out more clearly in profiles."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1630
+#, no-wrap
+msgid "I<data_src>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1636
+msgid ""
+"If B<PERF_SAMPLE_DATA_SRC> is enabled, then a 64 bit value is recorded that "
+"is made up of the following fields:"
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1637
+#, no-wrap
+msgid "I<mem_op>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1650
+msgid ""
+"type of opcode, a bitwise combination of B<PERF_MEM_OP_NA> (not available), "
+"B<PERF_MEM_OP_LOAD> (load instruction), B<PERF_MEM_OP_STORE> (store "
+"instruction), B<PERF_MEM_OP_PFETCH> (prefetch), and B<PERF_MEM_OP_EXEC> "
+"(executable code)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1650
+#, no-wrap
+msgid "I<mem_lvl>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1681
+msgid ""
+"memory hierarchy level hit or miss, a bitwise combination of "
+"B<PERF_MEM_LVL_NA> (not available), B<PERF_MEM_LVL_HIT> (hit), "
+"B<PERF_MEM_LVL_MISS> (miss), B<PERF_MEM_LVL_L1> (level 1 cache), "
+"B<PERF_MEM_LVL_LFB> (line fill buffer), B<PERF_MEM_LVL_L2> (level 2 cache), "
+"B<PERF_MEM_LVL_L3> (level 3 cache), B<PERF_MEM_LVL_LOC_RAM> (local DRAM), "
+"B<PERF_MEM_LVL_REM_RAM1> (remote DRAM 1 hop), B<PERF_MEM_LVL_REM_RAM2> "
+"(remote DRAM 2 hops), B<PERF_MEM_LVL_REM_CCE1> (remote cache 1 hop), "
+"B<PERF_MEM_LVL_REM_CCE2> (remote cache 2 hops), B<PERF_MEM_LVL_IO> (I/O "
+"memory), and B<PERF_MEM_LVL_UNC> (uncached memory)."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1544
+#: build/C/man2/perf_event_open.2:1681
+#, no-wrap
+msgid "I<mem_snoop>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1694
+msgid ""
+"snoop mode, a bitwise combination of B<PERF_MEM_SNOOP_NA> (not available), "
+"B<PERF_MEM_SNOOP_NONE> (no snoop), B<PERF_MEM_SNOOP_HIT> (snoop hit), "
+"B<PERF_MEM_SNOOP_MISS> (snoop miss), and B<PERF_MEM_SNOOP_HITM> (snoop hit "
+"modified)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1694
+#, no-wrap
+msgid "I<mem_lock>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1701
+msgid ""
+"lock instruction, a bitwise combination of B<PERF_MEM_LOCK_NA> (not "
+"available) and B<PERF_MEM_LOCK_LOCKED> (locked transaction)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1701
+#, no-wrap
+msgid "I<mem_dtlb>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1718
+msgid ""
+"tlb access hit or miss, a bitwise combination of B<PERF_MEM_TLB_NA> (not "
+"available), B<PERF_MEM_TLB_HIT> (hit), B<PERF_MEM_TLB_MISS> (miss), "
+"B<PERF_MEM_TLB_L1> (level 1 TLB), B<PERF_MEM_TLB_L2> (level 2 TLB), "
+"B<PERF_MEM_TLB_WK> (hardware walker), and B<PERF_MEM_TLB_OS> (OS fault "
+"handler)."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1721
#, no-wrap
msgid "I<misc>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1549
+#: build/C/man2/perf_event_open.2:1726
msgid "The I<misc> field contains additional information about the sample."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1554
+#: build/C/man2/perf_event_open.2:1731
msgid ""
"The CPU mode can be determined from this value by masking with "
"B<PERF_RECORD_MISC_CPUMODE_MASK> and looking for one of the following (note "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1555
+#: build/C/man2/perf_event_open.2:1732
#, no-wrap
msgid "B<PERF_RECORD_MISC_CPUMODE_UNKNOWN>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1558
+#: build/C/man2/perf_event_open.2:1735
msgid "Unknown CPU mode."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1558
+#: build/C/man2/perf_event_open.2:1735
#, no-wrap
msgid "B<PERF_RECORD_MISC_KERNEL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1561
+#: build/C/man2/perf_event_open.2:1738
msgid "Sample happened in the kernel."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1561
+#: build/C/man2/perf_event_open.2:1738
#, no-wrap
msgid "B<PERF_RECORD_MISC_USER>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1564
+#: build/C/man2/perf_event_open.2:1741
msgid "Sample happened in user code."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1564
+#: build/C/man2/perf_event_open.2:1741
#, no-wrap
msgid "B<PERF_RECORD_MISC_HYPERVISOR>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1567
+#: build/C/man2/perf_event_open.2:1744
msgid "Sample happened in the hypervisor."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1567
+#: build/C/man2/perf_event_open.2:1744
#, no-wrap
msgid "B<PERF_RECORD_MISC_GUEST_KERNEL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1570
+#: build/C/man2/perf_event_open.2:1747
msgid "Sample happened in the guest kernel."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1570
+#: build/C/man2/perf_event_open.2:1747
#, no-wrap
msgid "B<PERF_RECORD_MISC_GUEST_USER>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1573
+#: build/C/man2/perf_event_open.2:1750
msgid "Sample happened in guest user code."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1576
+#: build/C/man2/perf_event_open.2:1754
msgid "In addition, one of the following bits can be set:"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1577
+#: build/C/man2/perf_event_open.2:1754
+#, no-wrap
+msgid "B<PERF_RECORD_MISC_MMAP_DATA>"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1758
+msgid ""
+"This is set when the mapping is not executable; otherwise the mapping is "
+"executable."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:1758
#, no-wrap
msgid "B<PERF_RECORD_MISC_EXACT_IP>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1585
+#: build/C/man2/perf_event_open.2:1766
msgid ""
"This indicates that the content of B<PERF_SAMPLE_IP> points to the actual "
"instruction that triggered the event. See also "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1585
+#: build/C/man2/perf_event_open.2:1766
#, no-wrap
msgid "B<PERF_RECORD_MISC_EXT_RESERVED>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1588
+#: build/C/man2/perf_event_open.2:1769
msgid "This indicates there is extended data available (currently not used)."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1591
+#: build/C/man2/perf_event_open.2:1773
msgid "This indicates the size of the record."
msgstr ""
#. type: SS
-#: build/C/man2/perf_event_open.2:1592
+#: build/C/man2/perf_event_open.2:1774
#, no-wrap
msgid "Signal overflow"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1601
+#: build/C/man2/perf_event_open.2:1783
msgid ""
"Events can be set to deliver a signal when a threshold is crossed. The "
"signal handler is set up using the B<poll>(2), B<select>(2), B<epoll>(2) "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1605
+#: build/C/man2/perf_event_open.2:1787
msgid ""
"To generate signals, sampling must be enabled (I<sample_period> must have a "
"non-zero value)."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1607
+#: build/C/man2/perf_event_open.2:1789
msgid "There are two ways to generate signals."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1617
+#: build/C/man2/perf_event_open.2:1799
msgid ""
"The first is to set a I<wakeup_events> or I<wakeup_watermark> value that "
"will generate a signal if a certain number of samples or bytes have been "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1629
+#: build/C/man2/perf_event_open.2:1811
msgid ""
"The other way is by use of the B<PERF_EVENT_IOC_REFRESH> ioctl. This ioctl "
"adds to a counter that decrements each time the event overflows. When "
#. FIXME(Vince) : Find out when this was introduced
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1635
+#: build/C/man2/perf_event_open.2:1817
msgid ""
"Note: on newer kernels (definitely noticed with 3.2) a signal is provided "
"for every overflow, even if I<wakeup_events> is not set."
msgstr ""
#. type: SS
-#: build/C/man2/perf_event_open.2:1635
+#: build/C/man2/perf_event_open.2:1817
#, no-wrap
msgid "rdpmc instruction"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1642
+#: build/C/man2/perf_event_open.2:1824
msgid ""
"Starting with Linux 3.4 on x86, you can use the I<rdpmc> instruction to get "
"low-latency reads without having to enter the kernel. Note that using "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1647
+#: build/C/man2/perf_event_open.2:1829
msgid ""
"Support for this can be detected with the I<cap_usr_rdpmc> field in the mmap "
"page; documentation on how to calculate event values can be found in that "
msgstr ""
#. type: SS
-#: build/C/man2/perf_event_open.2:1647
+#: build/C/man2/perf_event_open.2:1829
#, no-wrap
msgid "perf_event ioctl calls"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1652
+#: build/C/man2/perf_event_open.2:1834
msgid "Various ioctls act on B<perf_event_open>() file descriptors"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1652
+#: build/C/man2/perf_event_open.2:1834
#, no-wrap
msgid "B<PERF_EVENT_IOC_ENABLE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1656
+#: build/C/man2/perf_event_open.2:1838
msgid ""
"Enables the individual event or event group specified by the file descriptor "
"argument."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1658 build/C/man2/perf_event_open.2:1671 build/C/man2/perf_event_open.2:1699
-msgid "The ioctl argument is ignored."
+#: build/C/man2/perf_event_open.2:1844
+msgid ""
+"If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
+"events in a group are enabled, even if the event specified is not the group "
+"leader (but see BUGS)."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1658
+#: build/C/man2/perf_event_open.2:1844
#, no-wrap
msgid "B<PERF_EVENT_IOC_DISABLE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1662
+#: build/C/man2/perf_event_open.2:1848
msgid ""
"Disables the individual counter or event group specified by the file "
"descriptor argument."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1669
+#: build/C/man2/perf_event_open.2:1855
msgid ""
"Enabling or disabling the leader of a group enables or disables the entire "
"group; that is, while the group leader is disabled, none of the counters in "
"counter from counting but doesn't affect any other counter."
msgstr ""
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1861
+msgid ""
+"If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
+"events in a group are disabled, even if the event specified is not the group "
+"leader (but see BUGS)."
+msgstr ""
+
#. type: TP
-#: build/C/man2/perf_event_open.2:1671
+#: build/C/man2/perf_event_open.2:1861
#, no-wrap
msgid "B<PERF_EVENT_IOC_REFRESH>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1685
+#: build/C/man2/perf_event_open.2:1875
msgid ""
"Non-inherited overflow counters can use this to enable a counter for a "
"number of overflows specified by the argument, after which it is disabled. "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1685
+#: build/C/man2/perf_event_open.2:1875
#, no-wrap
msgid "B<PERF_EVENT_IOC_RESET>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1697
+#: build/C/man2/perf_event_open.2:1885
msgid ""
-"Reset the event count specified by the file descriptor argumentto zero. "
+"Reset the event count specified by the file descriptor argument to zero. "
"This resets only the counts; there is no way to reset the multiplexing "
-"I<time_enabled> or I<time_running> values. When sent to a group leader, "
-"only the leader is reset (child events are not)."
+"I<time_enabled> or I<time_running> values."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1891
+msgid ""
+"If the B<PERF_IOC_FLAG_GROUP> bit is set in the ioctl argument, then all "
+"events in a group are reset, even if the event specified is not the group "
+"leader (but see BUGS)."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1699
+#: build/C/man2/perf_event_open.2:1891
#, no-wrap
msgid "B<PERF_EVENT_IOC_PERIOD>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1703
+#: build/C/man2/perf_event_open.2:1895
msgid ""
"IOC_PERIOD is the command to update the period; it does not update the "
"current period but instead defers until next."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1706
+#: build/C/man2/perf_event_open.2:1898
msgid ""
"The argument is a pointer to a 64-bit value containing the desired new "
"period."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1706
+#: build/C/man2/perf_event_open.2:1898
#, no-wrap
msgid "B<PERF_EVENT_IOC_SET_OUTPUT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1711
+#: build/C/man2/perf_event_open.2:1903
msgid ""
"This tells the kernel to report event notifications to the specified file "
"descriptor rather than the default one. The file descriptors must all be on "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1714
+#: build/C/man2/perf_event_open.2:1906
msgid ""
"The argument specifies the desired file descriptor, or -1 if output should "
"be ignored."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1714
+#: build/C/man2/perf_event_open.2:1906
#, no-wrap
msgid "B<PERF_EVENT_IOC_SET_FILTER> (Since Linux 2.6.33)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1717
+#: build/C/man2/perf_event_open.2:1909
msgid "This adds an ftrace filter to this event."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1719
+#: build/C/man2/perf_event_open.2:1911
msgid "The argument is a pointer to the desired ftrace filter."
msgstr ""
#. type: SS
-#: build/C/man2/perf_event_open.2:1719
+#: build/C/man2/perf_event_open.2:1911
#, no-wrap
msgid "Using prctl"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1732
+#: build/C/man2/perf_event_open.2:1924
msgid ""
"A process can enable or disable all the event groups that are attached to it "
"using the B<prctl>(2) B<PR_TASK_PERF_EVENTS_ENABLE> and "
msgstr ""
#. type: SS
-#: build/C/man2/perf_event_open.2:1732
+#: build/C/man2/perf_event_open.2:1924
#, no-wrap
msgid "perf_event related configuration files"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1735
+#: build/C/man2/perf_event_open.2:1927
msgid "Files in I</proc/sys/kernel/>"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1736
+#: build/C/man2/perf_event_open.2:1928
#, no-wrap
msgid "I</proc/sys/kernel/perf_event_paranoid>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1742
+#: build/C/man2/perf_event_open.2:1934
msgid ""
"The I<perf_event_paranoid> file can be set to restrict access to the "
"performance counters."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1744
+#: build/C/man2/perf_event_open.2:1936
msgid "2 - only allow user-space measurements"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1746
+#: build/C/man2/perf_event_open.2:1938
msgid "1 - (default) allow both kernel and user measurements"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1748
+#: build/C/man2/perf_event_open.2:1940
msgid "0 - allow access to CPU-specific data but not raw tracepoint samples"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1750
+#: build/C/man2/perf_event_open.2:1942
msgid "-1 - no restrictions"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1755
+#: build/C/man2/perf_event_open.2:1947
msgid ""
"The existence of the I<perf_event_paranoid> file is the official method for "
"determining if a kernel supports B<perf_event_open>()."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1755
+#: build/C/man2/perf_event_open.2:1947
#, no-wrap
msgid "I</proc/sys/kernel/perf_event_max_sample_rate>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1764
+#: build/C/man2/perf_event_open.2:1956
msgid ""
"This sets the maximum sample rate. Setting this too high can allow users to "
"sample at a rate that impacts overall machine performance and potentially "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1764
+#: build/C/man2/perf_event_open.2:1956
#, no-wrap
msgid "I</proc/sys/kernel/perf_event_mlock_kb>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1769
+#: build/C/man2/perf_event_open.2:1961
msgid ""
"Maximum number of pages an unprivileged user can mlock (2) . The default is "
"516 (kB)."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1772
+#: build/C/man2/perf_event_open.2:1965
msgid "Files in I</sys/bus/event_source/devices/>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1778
+#: build/C/man2/perf_event_open.2:1971
msgid ""
"Since Linux 2.6.34 the kernel supports having multiple PMUs available for "
"monitoring. Information on how to program these PMUs can be found under "
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1778
+#: build/C/man2/perf_event_open.2:1971
#, no-wrap
-msgid "I</sys/bus/event_source/devices/*/type>"
+msgid "I</sys/bus/event_source/devices/*/type> (Since Linux 2.6.38)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1783
+#: build/C/man2/perf_event_open.2:1976
msgid ""
"This contains an integer that can be used in the I<type> field of "
"perf_event_attr to indicate you wish to use this PMU."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1783
+#: build/C/man2/perf_event_open.2:1976
#, no-wrap
-msgid "I</sys/bus/event_source/devices/*/rdpmc>"
+msgid "I</sys/bus/event_source/devices/*/rdpmc> (Since Linux 3.4)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1981
+msgid ""
+"If this file is 1, then direct user-space access to the performance counter "
+"registers is allowed via the rdpmc instruction. This can be disabled by "
+"echoing 0 to the file."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1786
+#: build/C/man2/perf_event_open.2:1981
#, no-wrap
-msgid "I</sys/bus/event_source/devices/*/format/>"
+msgid "I</sys/bus/event_source/devices/*/format/> (Since Linux 3.4)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1791
+#: build/C/man2/perf_event_open.2:1987
msgid ""
-"This sub-directory contains information on what bits in the I<config> field "
-"of perf_event_attr correspond to."
+"This sub-directory contains information on the architecture-specific "
+"sub-fields available for programming the various I<config> fields in the "
+"perf_event_attr struct."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:1997
+msgid ""
+"The content of each file is the name of the config field, followed by a "
+"colon, followed by a series of integer bit ranges separated by commas. For "
+"example, the file I<event> may contain the value I<config1:1,6-10,44> which "
+"indicates that event is an attribute that occupies bits 1,6-10, and 44 of "
+"perf_event_attr::config1."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1791
+#: build/C/man2/perf_event_open.2:1997
#, no-wrap
-msgid "I</sys/bus/event_source/devices/*/events/>"
+msgid "I</sys/bus/event_source/devices/*/events/> (Since Linux 3.4)"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1800
+#: build/C/man2/perf_event_open.2:2006
msgid ""
"This sub-directory contains files with pre-defined events. The contents are "
"strings describing the event settings expressed in terms of the fields found "
-"in the I<./format/> directory. These are not necessarily complete lists of "
-"all events supported by a PMU, but usually a subset of events deemed useful "
-"or interesting."
+"in the previously mentioned I<./format/> directory. These are not "
+"necessarily complete lists of all events supported by a PMU, but usually a "
+"subset of events deemed useful or interesting."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:2014
+msgid ""
+"The content of each file is a list of attribute names separated by commas. "
+"Each entry has an optional value (either hex or decimal). If no value is "
+"specified than it is assumed to be a single-bit field with a value of 1. An "
+"example entry may look like this: I<event=0x2,inv,ldlat=3>"
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1800
+#: build/C/man2/perf_event_open.2:2014
#, no-wrap
msgid "I</sys/bus/event_source/devices/*/uevent>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1810
+#: build/C/man2/perf_event_open.2:2018
+msgid ""
+"This file is the standard kernel device interface for injecting hotplug "
+"events."
+msgstr ""
+
+#. type: TP
+#: build/C/man2/perf_event_open.2:2018
+#, no-wrap
+msgid "I</sys/bus/event_source/devices/*/cpumask> (Since Linux 3.7)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:2025
+msgid ""
+"The cpumask file contains a comma-separated list of integers that indicate a "
+"representative cpu number for each socket (package) on the motherboard. "
+"This is needed when setting up uncore or northbridge events, as those PMUs "
+"present socket-wide events."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:2032
msgid ""
"B<perf_event_open>() returns the new file descriptor, or -1 if an error "
"occurred (in which case, I<errno> is set appropriately)."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1814
+#: build/C/man2/perf_event_open.2:2036
msgid "Returned if the specified event is not available."
msgstr ""
#. type: TP
-#: build/C/man2/perf_event_open.2:1814
+#: build/C/man2/perf_event_open.2:2036
#, no-wrap
msgid "B<ENOSPC>"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1824
+#: build/C/man2/perf_event_open.2:2046
msgid ""
"Prior to Linux 3.3, if there was not enough room for the event, B<ENOSPC> "
"was returned. Linus did not like this, and this was changed to B<EINVAL>. "
msgstr ""
#. type: SH
-#: build/C/man2/perf_event_open.2:1824
+#: build/C/man2/perf_event_open.2:2046
#, no-wrap
msgid "VERSION"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1829
+#: build/C/man2/perf_event_open.2:2051
msgid ""
"B<perf_event_open>() was introduced in Linux 2.6.31 but was called "
"B<perf_counter_open>()B<.> It was renamed in Linux 2.6.32."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1834
+#: build/C/man2/perf_event_open.2:2056
msgid ""
"This B<perf_event_open>() system call Linux- specific and should not be "
"used in programs intended to be portable."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1838
+#: build/C/man2/perf_event_open.2:2060
msgid ""
"Glibc does not provide a wrapper for this system call; call it using "
"B<syscall>(2). See the example below."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1844
+#: build/C/man2/perf_event_open.2:2066
msgid ""
"The official way of knowing if B<perf_event_open>() support is enabled is "
"checking for the existence of the file "
msgstr ""
#. type: SH
-#: build/C/man2/perf_event_open.2:1844 build/C/man2/pivot_root.2:134 build/C/man2/ptrace.2:1811
+#: build/C/man2/perf_event_open.2:2066 build/C/man2/pivot_root.2:134 build/C/man2/ptrace.2:1884
#, no-wrap
msgid "BUGS"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1851
+#: build/C/man2/perf_event_open.2:2073
msgid ""
"The B<F_SETOWN_EX> option to B<fcntl>(2) is needed to properly get overflow "
"signals in threads. This was introduced in Linux 2.6.32."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1859
+#: build/C/man2/perf_event_open.2:2081
msgid ""
"Prior to Linux 2.6.33 (at least for x86) the kernel did not check if events "
"could be scheduled together until read time. The same happens on all known "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1863
+#: build/C/man2/perf_event_open.2:2085
msgid ""
"Prior to Linux 2.6.34 event constraints were not enforced by the kernel. In "
"that case, some events would silently return \"0\" if the kernel scheduled "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1866
+#: build/C/man2/perf_event_open.2:2088
msgid ""
"Prior to Linux 2.6.34 there was a bug when multiplexing where the wrong "
"results could be returned."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1869
+#: build/C/man2/perf_event_open.2:2091
msgid ""
"Kernels from Linux 2.6.35 to Linux 2.6.39 can quickly crash the kernel if "
"\"inherit\" is enabled and many threads are started."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1873
+#: build/C/man2/perf_event_open.2:2095
msgid ""
"Prior to Linux 2.6.35, B<PERF_FORMAT_GROUP> did not work with attached "
"processes."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1878
+#: build/C/man2/perf_event_open.2:2100
msgid ""
"In older Linux 2.6 versions, refreshing an event group leader refreshed all "
"siblings, and refreshing with a parameter of 0 enabled infinite refresh. "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1884
+#: build/C/man2/perf_event_open.2:2106
msgid ""
"There is a bug in the kernel code between Linux 2.6.36 and Linux 3.0 that "
"ignores the \"watermark\" field and acts as if a wakeup_event was chosen if "
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1889
+#: build/C/man2/perf_event_open.2:2112
+msgid ""
+"From Linux 2.6.31 to Linux 3.4, the B<PERF_IOC_FLAG_GROUP> ioctl argument "
+"was broken and would repeatedly operate on the event specified rather than "
+"iterating across all sibling events in a group."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/perf_event_open.2:2117
msgid ""
"Always double-check your results! Various generalized events have had wrong "
"values. For example, retired branches measured the wrong thing on AMD "
msgstr ""
#. type: SH
-#: build/C/man2/perf_event_open.2:1889 build/C/man2/process_vm_readv.2:295 build/C/man2/splice.2:223 build/C/man2/tee.2:130
+#: build/C/man2/perf_event_open.2:2117 build/C/man2/process_vm_readv.2:295 build/C/man2/splice.2:223 build/C/man2/tee.2:130
#, no-wrap
msgid "EXAMPLE"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1893
+#: build/C/man2/perf_event_open.2:2121
msgid ""
"The following is a short example that measures the total instruction count "
"of a call to B<printf>(3)."
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1902
+#: build/C/man2/perf_event_open.2:2130
#, no-wrap
msgid ""
"#include E<lt>stdlib.hE<gt>\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1908
+#: build/C/man2/perf_event_open.2:2136
#, no-wrap
msgid ""
"long\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1913
+#: build/C/man2/perf_event_open.2:2141
#, no-wrap
msgid ""
" ret = syscall(__NR_perf_event_open, hw_event, pid, cpu,\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1920
+#: build/C/man2/perf_event_open.2:2148
#, no-wrap
msgid ""
"int\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1928
+#: build/C/man2/perf_event_open.2:2156
#, no-wrap
msgid ""
" memset(&pe, 0, sizeof(struct perf_event_attr));\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1934
+#: build/C/man2/perf_event_open.2:2162
#, no-wrap
msgid ""
" fd = perf_event_open(&pe, 0, -1, -1, 0);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1937
+#: build/C/man2/perf_event_open.2:2165
#, no-wrap
msgid ""
" ioctl(fd, PERF_EVENT_IOC_RESET, 0);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1939
+#: build/C/man2/perf_event_open.2:2167
#, no-wrap
msgid " printf(\"Measuring instruction count for this printf\\en\");\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1942
+#: build/C/man2/perf_event_open.2:2170
#, no-wrap
msgid ""
" ioctl(fd, PERF_EVENT_IOC_DISABLE, 0);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1944
+#: build/C/man2/perf_event_open.2:2172
#, no-wrap
msgid " printf(\"Used %lld instructions\\en\", count);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1947
+#: build/C/man2/perf_event_open.2:2175
#, no-wrap
msgid ""
" close(fd);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/perf_event_open.2:1954
+#: build/C/man2/perf_event_open.2:2182
msgid "B<fcntl>(2), B<mmap>(2), B<open>(2), B<prctl>(2), B<read>(2)"
msgstr ""
#. type: TH
#: build/C/man2/ptrace.2:44
#, no-wrap
-msgid "2013-02-16"
+msgid "2013-07-11"
msgstr ""
#. type: Plain text
#. type: TP
#: build/C/man2/ptrace.2:257
#, no-wrap
-msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
-msgstr ""
-
-#. type: Plain text
-#: build/C/man2/ptrace.2:269
-msgid ""
-"Retrieve information about the signal that caused the stop. Copy a "
-"I<siginfo_t> structure (see B<sigaction>(2)) from the tracee to the address "
-"I<data> in the tracer. (I<addr> is ignored.)"
-msgstr ""
-
-#. type: TP
-#: build/C/man2/ptrace.2:269
-#, no-wrap
msgid "B<PTRACE_SETREGS>, B<PTRACE_SETFPREGS>"
msgstr ""
#. FIXME In the preceding sentence, which modifications are disallowed,
#. and when they are disallowed, how does user space discover that fact?
#. type: Plain text
-#: build/C/man2/ptrace.2:294
+#: build/C/man2/ptrace.2:282
msgid ""
"Modify the tracee's general-purpose or floating-point registers, "
"respectively, from the address I<data> in the tracer. As for "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:294
+#: build/C/man2/ptrace.2:282
#, no-wrap
msgid "B<PTRACE_SETREGSET> (since Linux 2.6.34)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:303
+#: build/C/man2/ptrace.2:291
msgid ""
"Modify the tracee's registers. The meaning of I<addr> and I<data> is "
"analogous to B<PTRACE_GETREGSET>."
msgstr ""
#. type: TP
+#: build/C/man2/ptrace.2:291
+#, no-wrap
+msgid "B<PTRACE_GETSIGINFO> (since Linux 2.3.99-pre6)"
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/ptrace.2:303
+msgid ""
+"Retrieve information about the signal that caused the stop. Copy a "
+"I<siginfo_t> structure (see B<sigaction>(2)) from the tracee to the address "
+"I<data> in the tracer. (I<addr> is ignored.)"
+msgstr ""
+
+#. type: TP
#: build/C/man2/ptrace.2:303
#, no-wrap
msgid "B<PTRACE_SETSIGINFO> (since Linux 2.3.99-pre6)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:349
+#: build/C/man2/ptrace.2:354
msgid ""
"Stop the tracee at the next B<clone>(2) and automatically start tracing the "
-"newly cloned process, which will start with a B<SIGSTOP>. A B<waitpid>(2) "
-"by the tracer will return a I<status> value such that"
+"newly cloned process, which will start with a B<SIGSTOP>, or "
+"B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used. A B<waitpid>(2) by the "
+"tracer will return a I<status> value such that"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:352
+#: build/C/man2/ptrace.2:357
#, no-wrap
msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_CLONEE<lt>E<lt>8))\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:356 build/C/man2/ptrace.2:437 build/C/man2/ptrace.2:465
+#: build/C/man2/ptrace.2:361 build/C/man2/ptrace.2:447 build/C/man2/ptrace.2:480
msgid "The PID of the new process can be retrieved with B<PTRACE_GETEVENTMSG>."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:377
+#: build/C/man2/ptrace.2:382
msgid ""
"This option may not catch B<clone>(2) calls in all cases. If the tracee "
"calls B<clone>(2) with the B<CLONE_VFORK> flag, B<PTRACE_EVENT_VFORK> will "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:377
+#: build/C/man2/ptrace.2:382
#, no-wrap
msgid "B<PTRACE_O_TRACEEXEC> (since Linux 2.5.46)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:386
+#: build/C/man2/ptrace.2:391
msgid ""
"Stop the tracee at the next B<execve>(2). A B<waitpid>(2) by the tracer "
"will return a I<status> value such that"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:389
+#: build/C/man2/ptrace.2:394
#, no-wrap
msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXECE<lt>E<lt>8))\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:395
+#: build/C/man2/ptrace.2:400
msgid ""
"If the execing thread is not a thread group leader, the thread ID is reset "
"to thread group leader's ID before this stop. Since Linux 3.0, the former "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:395
+#: build/C/man2/ptrace.2:400
#, no-wrap
msgid "B<PTRACE_O_TRACEEXIT> (since Linux 2.5.60)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:403
+#: build/C/man2/ptrace.2:408
msgid ""
"Stop the tracee at exit. A B<waitpid>(2) by the tracer will return a "
"I<status> value such that"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:406
+#: build/C/man2/ptrace.2:411
#, no-wrap
msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_EXITE<lt>E<lt>8))\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:410
+#: build/C/man2/ptrace.2:415
msgid "The tracee's exit status can be retrieved with B<PTRACE_GETEVENTMSG>."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:418
+#: build/C/man2/ptrace.2:423
msgid ""
"The tracee is stopped early during process exit, when registers are still "
"available, allowing the tracer to see where the exit occurred, whereas the "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:418
+#: build/C/man2/ptrace.2:423
#, no-wrap
msgid "B<PTRACE_O_TRACEFORK> (since Linux 2.5.46)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:430
+#: build/C/man2/ptrace.2:440
msgid ""
"Stop the tracee at the next B<fork>(2) and automatically start tracing the "
-"newly forked process, which will start with a B<SIGSTOP>. A B<waitpid>(2) "
-"by the tracer will return a I<status> value such that"
+"newly forked process, which will start with a B<SIGSTOP>, or "
+"B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used. A B<waitpid>(2) by the "
+"tracer will return a I<status> value such that"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:433
+#: build/C/man2/ptrace.2:443
#, no-wrap
msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_FORKE<lt>E<lt>8))\n"
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:437
+#: build/C/man2/ptrace.2:447
#, no-wrap
msgid "B<PTRACE_O_TRACESYSGOOD> (since Linux 2.4.6)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:446
+#: build/C/man2/ptrace.2:456
msgid ""
"When delivering system call traps, set bit 7 in the signal number (i.e., "
"deliver I<SIGTRAP|0x80>). This makes it easy for the tracer to distinguish "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:446
+#: build/C/man2/ptrace.2:456
#, no-wrap
msgid "B<PTRACE_O_TRACEVFORK> (since Linux 2.5.46)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:458
+#: build/C/man2/ptrace.2:473
msgid ""
"Stop the tracee at the next B<vfork>(2) and automatically start tracing the "
-"newly vforked process, which will start with a B<SIGSTOP>. A B<waitpid>(2) "
-"by the tracer will return a I<status> value such that"
+"newly vforked process, which will start with a B<SIGSTOP>, or "
+"B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used. A B<waitpid>(2) by the "
+"tracer will return a I<status> value such that"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:461
+#: build/C/man2/ptrace.2:476
#, no-wrap
msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORKE<lt>E<lt>8))\n"
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:465
+#: build/C/man2/ptrace.2:480
#, no-wrap
msgid "B<PTRACE_O_TRACEVFORKDONE> (since Linux 2.5.60)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:474
+#: build/C/man2/ptrace.2:489
msgid ""
"Stop the tracee at the completion of the next B<vfork>(2). A B<waitpid>(2) "
"by the tracer will return a I<status> value such that"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:477
+#: build/C/man2/ptrace.2:492
#, no-wrap
msgid " statusE<gt>E<gt>8 == (SIGTRAP | (PTRACE_EVENT_VFORK_DONEE<lt>E<lt>8))\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:481
+#: build/C/man2/ptrace.2:496
msgid ""
"The PID of the new process can (since Linux 2.6.18) be retrieved with "
"B<PTRACE_GETEVENTMSG>."
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:482
+#: build/C/man2/ptrace.2:497
#, no-wrap
msgid "B<PTRACE_GETEVENTMSG> (since Linux 2.5.46)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:502
+#: build/C/man2/ptrace.2:517
msgid ""
"Retrieve a message (as an I<unsigned long>) about the ptrace event that "
"just happened, placing it at the address I<data> in the tracer. For "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:502
+#: build/C/man2/ptrace.2:517
#, no-wrap
msgid "B<PTRACE_CONT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:514
+#: build/C/man2/ptrace.2:529
msgid ""
"Restart the stopped tracee process. If I<data> is nonzero, it is "
"interpreted as the number of a signal to be delivered to the tracee; "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:514
+#: build/C/man2/ptrace.2:529
#, no-wrap
msgid "B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:538
+#: build/C/man2/ptrace.2:553
msgid ""
"Restart the stopped tracee as for B<PTRACE_CONT>, but arrange for the tracee "
"to be stopped at the next entry to or exit from a system call, or after "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:538
+#: build/C/man2/ptrace.2:553
#, no-wrap
msgid "B<PTRACE_SYSEMU>, B<PTRACE_SYSEMU_SINGLESTEP> (since Linux 2.6.14)"
msgstr ""
#. As at 3.7
#. type: Plain text
-#: build/C/man2/ptrace.2:559
+#: build/C/man2/ptrace.2:574
msgid ""
"For B<PTRACE_SYSEMU>, continue and stop on entry to the next system call, "
"which will not be executed. For B<PTRACE_SYSEMU_SINGLESTEP>, do the same "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:559
+#: build/C/man2/ptrace.2:574
#, no-wrap
msgid "B<PTRACE_LISTEN> (since Linux 3.4)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:570
+#: build/C/man2/ptrace.2:585
msgid ""
"Restart the stopped tracee, but prevent it from executing. The resulting "
"state of the tracee is similar to a process which has been stopped by a "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:570
+#: build/C/man2/ptrace.2:585
#, no-wrap
msgid "B<PTRACE_KILL>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:579
+#: build/C/man2/ptrace.2:594
msgid ""
"Send the tracee a B<SIGKILL> to terminate it. (I<addr> and I<data> are "
"ignored.)"
#. deprecation suggested by Oleg Nesterov. He prefers to deprecate it
#. instead of describing (and needing to support) PTRACE_KILL's quirks.]
#. type: Plain text
-#: build/C/man2/ptrace.2:598
+#: build/C/man2/ptrace.2:613
msgid ""
"I<This operation is deprecated; do not use it!> Instead, send a B<SIGKILL> "
"directly using B<kill>(2) or B<tgkill>(2). The problem with B<PTRACE_KILL> "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:598
+#: build/C/man2/ptrace.2:613
#, no-wrap
msgid "B<PTRACE_INTERRUPT> (since Linux 3.4)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:612
+#: build/C/man2/ptrace.2:641
msgid ""
-"Stop a tracee. If the tracee is running, it will stop with "
-"B<PTRACE_EVENT_STOP>. If the tracee is already stopped by a signal, or "
-"receives a signal in parallel with B<PTRACE_INTERRUPT>, it may report a "
-"group-stop or a signal-delivery-stop instead of B<PTRACE_EVENT_STOP>. "
+"Stop a tracee. If the tracee is running or sleeping in kernel space and "
+"B<PTRACE_SYSCALL> is in effect, the system call is interrupted and "
+"syscall-exit-stop is reported. (The interrupted system call is restarted "
+"when the tracee is restarted.) If the tracee was already stopped by a "
+"signal and B<PTRACE_LISTEN> was sent to it, the tracee stops with "
+"B<PTRACE_EVENT_STOP> and I<WSTOPSIG(status)> returns the stop signal. If "
+"any other ptrace-stop is generated at the same time (for example, if a "
+"signal is sent to the tracee), this ptrace-stop happens. If none of the "
+"above applies (for example, if the tracee is running in userspace), it stops "
+"with B<PTRACE_EVENT_STOP> with I<WSTOPSIG(status)> == B<SIGTRAP>. "
"B<PTRACE_INTERRUPT> only works on tracees attached by B<PTRACE_SEIZE>."
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:612
+#: build/C/man2/ptrace.2:641
#, no-wrap
msgid "B<PTRACE_ATTACH>"
msgstr ""
#. .BR getppid (2)
#. by the tracee will still return the PID of the original parent.
#. type: Plain text
-#: build/C/man2/ptrace.2:640
+#: build/C/man2/ptrace.2:669
msgid ""
"Attach to the process specified in I<pid>, making it a tracee of the calling "
"process. The tracee is sent a B<SIGSTOP>, but will not necessarily have "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:640
+#: build/C/man2/ptrace.2:669
#, no-wrap
msgid "B<PTRACE_SEIZE> (since Linux 3.4)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:660
+#: build/C/man2/ptrace.2:689
msgid ""
"Attach to the process specified in I<pid>, making it a tracee of the calling "
"process. Unlike B<PTRACE_ATTACH>, B<PTRACE_SEIZE> does not stop the "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:660
+#: build/C/man2/ptrace.2:689
#, no-wrap
msgid "B<PTRACE_DETACH>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:669
+#: build/C/man2/ptrace.2:698
msgid ""
"Restart the stopped tracee as for B<PTRACE_CONT>, but first detach from it. "
"Under Linux, a tracee can be detached in this way regardless of which method "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:669
+#: build/C/man2/ptrace.2:698
#, no-wrap
msgid "Death under ptrace"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:678
+#: build/C/man2/ptrace.2:707
msgid ""
"When a (possibly multithreaded) process receives a killing signal (one whose "
"disposition is set to B<SIG_DFL> and whose default action is to kill the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:687
+#: build/C/man2/ptrace.2:716
msgid ""
"Note that the killing signal will first cause signal-delivery-stop (on one "
"tracee only), and only after it is injected by the tracer (or after it was "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:699
+#: build/C/man2/ptrace.2:728
msgid ""
"B<SIGKILL> does not generate signal-delivery-stop and therefore the tracer "
"can't suppress it. B<SIGKILL> kills even within system calls "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:704
+#: build/C/man2/ptrace.2:733
msgid ""
"When the tracee calls B<_exit>(2), it reports its death to its tracer. "
"Other threads are not affected."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:708
+#: build/C/man2/ptrace.2:737
msgid ""
"When any thread executes B<exit_group>(2), every tracee in its thread group "
"reports its death to its tracer."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:722
+#: build/C/man2/ptrace.2:751
msgid ""
"If the B<PTRACE_O_TRACEEXIT> option is on, B<PTRACE_EVENT_EXIT> will happen "
"before actual death. This applies to exits via B<exit>(2), "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:747
+#: build/C/man2/ptrace.2:776
msgid ""
"The tracer cannot assume that the ptrace-stopped tracee exists. There are "
"many scenarios when the tracee may die while stopped (such as B<SIGKILL>). "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:761
+#: build/C/man2/ptrace.2:790
msgid ""
"The tracer can't assume that the tracee I<always> ends its life by reporting "
"I<WIFEXITED(status)> or I<WIFSIGNALED(status)>; there are cases where this "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:761
+#: build/C/man2/ptrace.2:790
#, no-wrap
msgid "Stopped states"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:763
-msgid "A tracee can be in two states: running or stopped."
+#: build/C/man2/ptrace.2:812
+msgid ""
+"A tracee can be in two states: running or stopped. For the purposes of "
+"ptrace, a tracee which is blocked in a system call (such as B<read>(2), "
+"B<pause>(2), etc.) is nevertheless considered to be running, even if the "
+"tracee is blocked for a long time. The state of the tracee after "
+"B<PTRACE_LISTEN> is somewhat of a gray area: it is not in any ptrace-stop "
+"(ptrace commands won't work on it, and it will deliver B<waitpid>(2) "
+"notifications), but it also may be considered \"stopped\" because it is not "
+"executing instructions (is not scheduled), and if it was in group-stop "
+"before B<PTRACE_LISTEN>, it will not respond to signals until B<SIGCONT> is "
+"received."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:767
+#: build/C/man2/ptrace.2:816
msgid ""
"There are many kinds of states when the tracee is stopped, and in ptrace "
"discussions they are often conflated. Therefore, it is important to use "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:778
+#: build/C/man2/ptrace.2:827
msgid ""
"In this manual page, any stopped state in which the tracee is ready to "
"accept ptrace commands from the tracer is called I<ptrace-stop>. "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:783
+#: build/C/man2/ptrace.2:832
msgid ""
"When the running tracee enters ptrace-stop, it notifies its tracer using "
"B<waitpid>(2) (or one of the other \"wait\" system calls). Most of this "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:785
+#: build/C/man2/ptrace.2:834
#, no-wrap
msgid " pid = waitpid(pid_or_minus_1, &status, __WALL);\n"
msgstr ""
#. rules different if user wants to use waitid? Will waitid require
#. WEXITED?
#. type: Plain text
-#: build/C/man2/ptrace.2:797
+#: build/C/man2/ptrace.2:846
msgid ""
"Ptrace-stopped tracees are reported as returns with I<pid> greater than 0 "
"and I<WIFSTOPPED(status)> true."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:805
+#: build/C/man2/ptrace.2:854
msgid ""
"The B<__WALL> flag does not include the B<WSTOPPED> and B<WEXITED> flags, "
"but implies their functionality."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:812
+#: build/C/man2/ptrace.2:861
msgid ""
"Setting the B<WCONTINUED> flag when calling B<waitpid>(2) is not "
"recommended: the \"continued\" state is per-process and consuming it can "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:820
+#: build/C/man2/ptrace.2:869
msgid ""
"Use of the B<WNOHANG> flag may cause B<waitpid>(2) to return 0 (\"no wait "
"results available yet\") even if the tracer knows there should be a "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:829
+#: build/C/man2/ptrace.2:878
#, no-wrap
msgid ""
" errno = 0;\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:852
+#: build/C/man2/ptrace.2:901
msgid ""
"The following kinds of ptrace-stops exist: signal-delivery-stops, "
"group-stops, B<PTRACE_EVENT> stops, syscall-stops. They all are reported by "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:852
+#: build/C/man2/ptrace.2:901
#, no-wrap
msgid "Signal-delivery-stop"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:872
+#: build/C/man2/ptrace.2:921
msgid ""
"When a (possibly multithreaded) process receives any signal except "
"B<SIGKILL>, the kernel selects an arbitrary thread which handles the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:886
+#: build/C/man2/ptrace.2:935
msgid ""
"Signal-delivery-stop is observed by the tracer as B<waitpid>(2) returning "
"with I<WIFSTOPPED(status)> true, with the signal returned by "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:886
+#: build/C/man2/ptrace.2:935
#, no-wrap
msgid "Signal injection and suppression"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:889
+#: build/C/man2/ptrace.2:938
msgid ""
"After signal-delivery-stop is observed by the tracer, the tracer should "
"restart the tracee with the call"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:891
+#: build/C/man2/ptrace.2:940
#, no-wrap
msgid " ptrace(PTRACE_restart, pid, 0, sig)\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:904
+#: build/C/man2/ptrace.2:953
msgid ""
"where B<PTRACE_restart> is one of the restarting ptrace requests. If I<sig> "
"is 0, then a signal is not delivered. Otherwise, the signal I<sig> is "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:910
+#: build/C/man2/ptrace.2:959
msgid ""
"The I<sig> value may be different from the I<WSTOPSIG(status)> value: the "
"tracer can cause a different signal to be injected."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:926
+#: build/C/man2/ptrace.2:975
msgid ""
"Note that a suppressed signal still causes system calls to return "
"prematurely. In this case system calls will be restarted: the tracer will "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:937
+#: build/C/man2/ptrace.2:986
msgid ""
"Restarting ptrace commands issued in ptrace-stops other than "
"signal-delivery-stop are not guaranteed to inject a signal, even if I<sig> "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:944
+#: build/C/man2/ptrace.2:993
msgid ""
"The fact that signal injection requests may be ignored when restarting the "
"tracee after ptrace stops that are not signal-delivery-stops is a cause of "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:946
+#: build/C/man2/ptrace.2:995
#, no-wrap
msgid " ptrace(PTRACE_restart, pid, 0, stopsig)\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:952
+#: build/C/man2/ptrace.2:1001
msgid ""
"with the intention of injecting I<stopsig>, but I<stopsig> gets ignored and "
"the tracee continues to run."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:972
+#: build/C/man2/ptrace.2:1021
msgid ""
"The B<SIGCONT> signal has a side effect of waking up (all threads of) a "
"group-stopped process. This side effect happens before "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:976
+#: build/C/man2/ptrace.2:1025
msgid ""
"Stopping signals cause (all threads of) a process to enter group-stop. This "
"side effect happens after signal injection, and therefore can be suppressed "
#. if (signr == SIGSTOP)
#. continue;
#. type: Plain text
-#: build/C/man2/ptrace.2:986
+#: build/C/man2/ptrace.2:1035
msgid "In Linux 2.4 and earlier, the B<SIGSTOP> signal can't be injected."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1003
+#: build/C/man2/ptrace.2:1052
msgid ""
"B<PTRACE_GETSIGINFO> can be used to retrieve a I<siginfo_t> structure which "
"corresponds to the delivered signal. B<PTRACE_SETSIGINFO> may be used to "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1003
+#: build/C/man2/ptrace.2:1052
#, no-wrap
msgid "Group-stop"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1015
+#: build/C/man2/ptrace.2:1064
msgid ""
"When a (possibly multithreaded) process receives a stopping signal, all "
"threads stop. If some threads are traced, they enter a group-stop. Note "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1024
+#: build/C/man2/ptrace.2:1073
msgid ""
"Group-stop is observed by the tracer as B<waitpid>(2) returning with "
"I<WIFSTOPPED(status)> true, with the stopping signal available via "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1026
+#: build/C/man2/ptrace.2:1075
#, no-wrap
msgid " ptrace(PTRACE_GETSIGINFO, pid, 0, &siginfo)\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1047
+#: build/C/man2/ptrace.2:1096
msgid ""
"The call can be avoided if the signal is not B<SIGSTOP>, B<SIGTSTP>, "
"B<SIGTTIN>, or B<SIGTTOU>; only these four signals are stopping signals. If "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1056
+#: build/C/man2/ptrace.2:1106
+msgid ""
+"If tracee was attached using I<PTRACE_SEIZE>, group-stop is indicated by "
+"B<PTRACE_EVENT_STOP>: I<statusE<gt>E<gt>16 == PTRACE_EVENT_STOP>. This "
+"allows detection of group-stops without requiring an extra "
+"B<PTRACE_GETSIGINFO> call."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/ptrace.2:1115
msgid ""
"As of Linux 2.6.38, after the tracer sees the tracee ptrace-stop and until "
"it restarts or kills it, the tracee will not run, and will not send "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1070
+#: build/C/man2/ptrace.2:1129
msgid ""
"The kernel behavior described in the previous paragraph causes a problem "
"with transparent handling of stopping signals. If the tracer restarts the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1081
+#: build/C/man2/ptrace.2:1140
msgid ""
"Since Linux 3.4, there is a method to overcome this problem: instead of "
"B<PTRACE_CONT>, a B<PTRACE_LISTEN> command can be used to restart a tracee "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1081
+#: build/C/man2/ptrace.2:1140
#, no-wrap
msgid "PTRACE_EVENT stops"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1087
+#: build/C/man2/ptrace.2:1146
msgid ""
"If the tracer sets B<PTRACE_O_TRACE_*> options, the tracee will enter "
"ptrace-stops called B<PTRACE_EVENT> stops."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1101
+#: build/C/man2/ptrace.2:1160
msgid ""
"B<PTRACE_EVENT> stops are observed by the tracer as B<waitpid>(2) returning "
"with I<WIFSTOPPED(status)>, and I<WSTOPSIG(status)> returns B<SIGTRAP>. An "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1103
+#: build/C/man2/ptrace.2:1162
#, no-wrap
msgid " (SIGTRAP | PTRACE_EVENT_foo E<lt>E<lt> 8).\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1105
+#: build/C/man2/ptrace.2:1164
msgid "The following events exist:"
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1105
+#: build/C/man2/ptrace.2:1164
#, no-wrap
msgid "B<PTRACE_EVENT_VFORK>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1118
+#: build/C/man2/ptrace.2:1177
msgid ""
"Stop before return from B<vfork>(2) or B<clone>(2) with the B<CLONE_VFORK> "
"flag. When the tracee is continued after this stop, it will wait for child "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1118
+#: build/C/man2/ptrace.2:1177
#, no-wrap
msgid "B<PTRACE_EVENT_FORK>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1126
+#: build/C/man2/ptrace.2:1185
msgid ""
"Stop before return from B<fork>(2) or B<clone>(2) with the exit signal set "
"to B<SIGCHLD>."
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1126
+#: build/C/man2/ptrace.2:1185
#, no-wrap
msgid "B<PTRACE_EVENT_CLONE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1130
+#: build/C/man2/ptrace.2:1189
msgid "Stop before return from B<clone>(2)."
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1130
+#: build/C/man2/ptrace.2:1189
#, no-wrap
msgid "B<PTRACE_EVENT_VFORK_DONE>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1140
+#: build/C/man2/ptrace.2:1199
msgid ""
"Stop before return from B<vfork>(2) or B<clone>(2) with the B<CLONE_VFORK> "
"flag, but after the child unblocked this tracee by exiting or execing."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1146
+#: build/C/man2/ptrace.2:1205
msgid ""
"For all four stops described above, the stop occurs in the parent (i.e., the "
"tracee), not in the newly created thread. B<PTRACE_GETEVENTMSG> can be used "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1146
+#: build/C/man2/ptrace.2:1205
#, no-wrap
msgid "B<PTRACE_EVENT_EXEC>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1153
+#: build/C/man2/ptrace.2:1212
msgid ""
"Stop before return from B<execve>(2). Since Linux 3.0, "
"B<PTRACE_GETEVENTMSG> returns the former thread ID."
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1153
+#: build/C/man2/ptrace.2:1212
#, no-wrap
msgid "B<PTRACE_EVENT_EXIT>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1169
+#: build/C/man2/ptrace.2:1228
msgid ""
"Stop before exit (including death from B<exit_group>(2)), signal death, or "
"exit caused by B<execve>(2) in a multithreaded process. "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1169
+#: build/C/man2/ptrace.2:1228
#, no-wrap
msgid "B<PTRACE_EVENT_STOP>"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1174
-msgid "Stop induced by B<PTRACE_INTERRUPT> command."
+#: build/C/man2/ptrace.2:1240
+msgid ""
+"Stop induced by B<PTRACE_INTERRUPT> command, or group-stop, or initial "
+"ptrace-stop when a new child is attached (only if attached using "
+"B<PTRACE_SEIZE>). or B<PTRACE_EVENT_STOP> if B<PTRACE_SEIZE> was used."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1186
+#: build/C/man2/ptrace.2:1252
msgid ""
"B<PTRACE_GETSIGINFO> on B<PTRACE_EVENT> stops returns B<SIGTRAP> in "
"I<si_signo>, with I<si_code> set to I<(eventE<lt>E<lt>8)\\ |\\ SIGTRAP>."
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1186
+#: build/C/man2/ptrace.2:1252
#, no-wrap
msgid "Syscall-stops"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1199
+#: build/C/man2/ptrace.2:1265
msgid ""
"If the tracee was restarted by B<PTRACE_SYSCALL>, the tracee enters "
"syscall-enter-stop just prior to entering any system call. If the tracer "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1213
+#: build/C/man2/ptrace.2:1279
msgid ""
"Other possibilities are that the tracee may stop in a B<PTRACE_EVENT> stop, "
"exit (if it entered B<_exit>(2) or B<exit_group>(2)), be killed by "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1228
+#: build/C/man2/ptrace.2:1294
msgid ""
"Syscall-enter-stop and syscall-exit-stop are observed by the tracer as "
"B<waitpid>(2) returning with I<WIFSTOPPED(status)> true, and "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1234
+#: build/C/man2/ptrace.2:1300
msgid ""
"Syscall-stops can be distinguished from signal-delivery-stop with B<SIGTRAP> "
"by querying B<PTRACE_GETSIGINFO> for the following cases:"
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1234
+#: build/C/man2/ptrace.2:1300
#, no-wrap
msgid "I<si_code> E<lt>= 0"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1246
+#: build/C/man2/ptrace.2:1312
msgid ""
"B<SIGTRAP> was delivered as a result of a user-space action, for example, a "
"system call (B<tgkill>(2), B<kill>(2), B<sigqueue>(3), etc.), expiration of "
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1246
+#: build/C/man2/ptrace.2:1312
#, no-wrap
msgid "I<si_code> == SI_KERNEL (0x80)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1250
+#: build/C/man2/ptrace.2:1316
msgid "B<SIGTRAP> was sent by the kernel."
msgstr ""
#. type: TP
-#: build/C/man2/ptrace.2:1250
+#: build/C/man2/ptrace.2:1316
#, no-wrap
msgid "I<si_code> == SIGTRAP or I<si_code> == (SIGTRAP|0x80)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1253
+#: build/C/man2/ptrace.2:1319
msgid "This is a syscall-stop."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1258
+#: build/C/man2/ptrace.2:1324
msgid ""
"However, syscall-stops happen very often (twice per system call), and "
"performing B<PTRACE_GETSIGINFO> for every syscall-stop may be somewhat "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1281
+#: build/C/man2/ptrace.2:1347
msgid ""
"Some architectures allow the cases to be distinguished by examining "
"registers. For example, on x86, I<rax> == -B<ENOSYS> in "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1287
+#: build/C/man2/ptrace.2:1353
msgid ""
"Using the B<PTRACE_O_TRACESYSGOOD> option is the recommended method to "
"distinguish syscall-stops from other kinds of ptrace-stops, since it is "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1298
+#: build/C/man2/ptrace.2:1364
msgid ""
"Syscall-enter-stop and syscall-exit-stop are indistinguishable from each "
"other by the tracer. The tracer needs to keep track of the sequence of "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1303
+#: build/C/man2/ptrace.2:1369
msgid ""
"If after syscall-enter-stop, the tracer uses a restarting command other than "
"B<PTRACE_SYSCALL>, syscall-exit-stop is not generated."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1315
+#: build/C/man2/ptrace.2:1381
msgid ""
"B<PTRACE_GETSIGINFO> on syscall-stops returns B<SIGTRAP> in I<si_signo>, "
"with I<si_code> set to B<SIGTRAP> or I<(SIGTRAP|0x80)>."
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1315
+#: build/C/man2/ptrace.2:1381
#, no-wrap
msgid "PTRACE_SINGLESTEP, PTRACE_SYSEMU, PTRACE_SYSEMU_SINGLESTEP stops"
msgstr ""
#. document stops occurring with PTRACE_SINGLESTEP, PTRACE_SYSEMU,
#. PTRACE_SYSEMU_SINGLESTEP
#. type: Plain text
-#: build/C/man2/ptrace.2:1321
+#: build/C/man2/ptrace.2:1387
msgid "[Details of these kinds of stops are yet to be documented.]"
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1321
+#: build/C/man2/ptrace.2:1387
#, no-wrap
msgid "Informational and restarting ptrace commands"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1331
+#: build/C/man2/ptrace.2:1397
msgid ""
"Most ptrace commands (all except B<PTRACE_ATTACH>, B<PTRACE_SEIZE>, "
"B<PTRACE_TRACEME>, B<PTRACE_INTERRUPT>, and B<PTRACE_KILL>) require the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1336
+#: build/C/man2/ptrace.2:1402
msgid ""
"When the tracee is in ptrace-stop, the tracer can read and write data to the "
"tracee using informational commands. These commands leave the tracee in "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1348
+#: build/C/man2/ptrace.2:1414
#, no-wrap
msgid ""
" ptrace(PTRACE_PEEKTEXT/PEEKDATA/PEEKUSER, pid, addr, 0);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1360
+#: build/C/man2/ptrace.2:1426
msgid ""
"Note that some errors are not reported. For example, setting signal "
"information (I<siginfo>) may have no effect in some ptrace-stops, yet the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1362
+#: build/C/man2/ptrace.2:1428
msgid "The call"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1364
+#: build/C/man2/ptrace.2:1430
#, no-wrap
msgid " ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_flags);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1373
+#: build/C/man2/ptrace.2:1439
msgid ""
"affects one tracee. The tracee's current flags are replaced. Flags are "
"inherited by new tracees created and \"auto-attached\" via active "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1376
+#: build/C/man2/ptrace.2:1442
msgid ""
"Another group of commands makes the ptrace-stopped tracee run. They have "
"the form:"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1378
+#: build/C/man2/ptrace.2:1444
#, no-wrap
msgid " ptrace(cmd, pid, 0, sig);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1399
+#: build/C/man2/ptrace.2:1465
msgid ""
"where I<cmd> is B<PTRACE_CONT>, B<PTRACE_LISTEN>, B<PTRACE_DETACH>, "
"B<PTRACE_SYSCALL>, B<PTRACE_SINGLESTEP>, B<PTRACE_SYSEMU>, or "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1399
+#: build/C/man2/ptrace.2:1465
#, no-wrap
msgid "Attaching and detaching"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1401
+#: build/C/man2/ptrace.2:1467
msgid "A thread can be attached to the tracer using the call"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1403
+#: build/C/man2/ptrace.2:1469
#, no-wrap
msgid " ptrace(PTRACE_ATTACH, pid, 0, 0);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1405 build/C/man2/ptrace.2:1895
+#: build/C/man2/ptrace.2:1471 build/C/man2/ptrace.2:1968
msgid "or"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1407
+#: build/C/man2/ptrace.2:1473
#, no-wrap
msgid " ptrace(PTRACE_SEIZE, pid, 0, PTRACE_O_flags);\n"
msgstr ""
#. FIXME: Describe how to attach to a thread which is already
#. group-stopped.
#. type: Plain text
-#: build/C/man2/ptrace.2:1432
+#: build/C/man2/ptrace.2:1498
msgid ""
"B<PTRACE_ATTACH> sends B<SIGSTOP> to this thread. If the tracer wants this "
"B<SIGSTOP> to have no effect, it needs to suppress it. Note that if other "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1439
+#: build/C/man2/ptrace.2:1505
msgid ""
"Since attaching sends B<SIGSTOP> and the tracer usually suppresses it, this "
"may cause a stray B<EINTR> return from the currently executing system call "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1451
+#: build/C/man2/ptrace.2:1517
msgid ""
"Since Linux 3.4, B<PTRACE_SEIZE> can be used instead of B<PTRACE_ATTACH>. "
"B<PTRACE_SEIZE> does not stop the attached process. If you need to stop it "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1453
+#: build/C/man2/ptrace.2:1519
msgid "The request"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1455
+#: build/C/man2/ptrace.2:1521
#, no-wrap
msgid " ptrace(PTRACE_TRACEME, 0, 0, 0);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1461
+#: build/C/man2/ptrace.2:1527
msgid ""
"turns the calling thread into a tracee. The thread continues to run "
"(doesn't enter ptrace-stop). A common practice is to follow the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1463
+#: build/C/man2/ptrace.2:1529
#, no-wrap
msgid " raise(SIGSTOP);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1466
+#: build/C/man2/ptrace.2:1532
msgid ""
"and allow the parent (which is our tracer now) to observe our "
"signal-delivery-stop."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1490
+#: build/C/man2/ptrace.2:1556
msgid ""
"If the B<PTRACE_O_TRACEFORK>, B<PTRACE_O_TRACEVFORK>, or "
"B<PTRACE_O_TRACECLONE> options are in effect, then children created by, "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1492
+#: build/C/man2/ptrace.2:1558
msgid "Detaching of the tracee is performed by:"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1494
+#: build/C/man2/ptrace.2:1560
#, no-wrap
msgid " ptrace(PTRACE_DETACH, pid, 0, sig);\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1502
+#: build/C/man2/ptrace.2:1568
msgid ""
"B<PTRACE_DETACH> is a restarting operation; therefore it requires the tracee "
"to be in ptrace-stop. If the tracee is in signal-delivery-stop, a signal "
#. FIXME: Describe how to detach from a group-stopped tracee so that it
#. doesn't run, but continues to wait for SIGCONT.
#. type: Plain text
-#: build/C/man2/ptrace.2:1526
+#: build/C/man2/ptrace.2:1592
msgid ""
"If the tracee is running when the tracer wants to detach it, the usual "
"solution is to send B<SIGSTOP> (using B<tgkill>(2), to make sure it goes to "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1534
+#: build/C/man2/ptrace.2:1600
msgid ""
"If the tracer dies, all tracees are automatically detached and restarted, "
"unless they were in group-stop. Handling of restart from group-stop is "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1534
+#: build/C/man2/ptrace.2:1600
#, no-wrap
msgid "execve(2) under ptrace"
msgstr ""
#
#. In kernel 3.1 sources, see fs/exec.c::de_thread()
#. type: Plain text
-#: build/C/man2/ptrace.2:1553
+#: build/C/man2/ptrace.2:1619
msgid ""
"When one thread in a multithreaded process calls B<execve>(2), the kernel "
"destroys all other threads in the process, and resets the thread ID of the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1563
+#: build/C/man2/ptrace.2:1629
msgid ""
"All other threads stop in B<PTRACE_EVENT_EXIT> stop, if the "
"B<PTRACE_O_TRACEEXIT> option was turned on. Then all other threads except "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1571
+#: build/C/man2/ptrace.2:1637
msgid ""
"The execing tracee changes its thread ID while it is in the B<execve>(2). "
"(Remember, under ptrace, the \"pid\" returned from B<waitpid>(2), or fed "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1577
+#: build/C/man2/ptrace.2:1643
msgid ""
"Then a B<PTRACE_EVENT_EXEC> stop happens, if the B<PTRACE_O_TRACEEXEC> "
"option was turned on."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1598
+#: build/C/man2/ptrace.2:1664
msgid ""
"If the thread group leader has reported its B<PTRACE_EVENT_EXIT> stop by "
"this time, it appears to the tracer that the dead thread leader \"reappears "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1601
+#: build/C/man2/ptrace.2:1667
msgid ""
"All of the above effects are the artifacts of the thread ID change in the "
"tracee."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1621
+#: build/C/man2/ptrace.2:1687
msgid ""
"The B<PTRACE_O_TRACEEXEC> option is the recommended tool for dealing with "
"this situation. First, it enables B<PTRACE_EVENT_EXEC> stop, which occurs "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1627
+#: build/C/man2/ptrace.2:1693
msgid ""
"When the tracer receives B<PTRACE_EVENT_EXEC> stop notification, it is "
"guaranteed that except this tracee and the thread group leader, no other "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1635
+#: build/C/man2/ptrace.2:1701
msgid ""
"On receiving the B<PTRACE_EVENT_EXEC> stop notification, the tracer should "
"clean up all its internal data structures describing the threads of this "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1637
+#: build/C/man2/ptrace.2:1703
#, no-wrap
msgid " thread ID == thread group ID == process ID.\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1641
+#: build/C/man2/ptrace.2:1707
msgid "Example: two threads call B<execve>(2) at the same time:"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1652
+#: build/C/man2/ptrace.2:1718
#, no-wrap
msgid ""
"*** we get syscall-enter-stop in thread 1: **\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1675
+#: build/C/man2/ptrace.2:1741
msgid ""
"If the B<PTRACE_O_TRACEEXEC> option is I<not> in effect for the execing "
"tracee, the kernel delivers an extra B<SIGTRAP> to the tracee after "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1694
+#: build/C/man2/ptrace.2:1760
msgid ""
"Usually, the tracer (for example, B<strace>(1)) would not want to show this "
"extra post-execve B<SIGTRAP> signal to the user, and would suppress its "
msgstr ""
#. type: SS
-#: build/C/man2/ptrace.2:1694
+#: build/C/man2/ptrace.2:1760
#, no-wrap
msgid "Real parent"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1701
+#: build/C/man2/ptrace.2:1767
msgid ""
"The ptrace API (ab)uses the standard UNIX parent/child signaling over "
"B<waitpid>(2). This used to cause the real parent of the process to stop "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1704
+#: build/C/man2/ptrace.2:1770
msgid ""
"Many of these bugs have been fixed, but as of Linux 2.6.38 several still "
"exist; see BUGS below."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1706
+#: build/C/man2/ptrace.2:1772
msgid "As of Linux 2.6.38, the following is believed to work correctly:"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1714
+#: build/C/man2/ptrace.2:1780
msgid ""
"exit/death by signal is reported first to the tracer, then, when the tracer "
"consumes the B<waitpid>(2) result, to the real parent (to the real parent "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1728
+#: build/C/man2/ptrace.2:1791
msgid ""
"On success, B<PTRACE_PEEK*> requests return the requested data, while other "
-"requests return zero. On error, all requests return -1, and I<errno> is set "
-"appropriately. Since the value returned by a successful B<PTRACE_PEEK*> "
-"request may be -1, the caller must clear I<errno> before the call, and then "
-"check it afterward to determine whether or not an error occurred."
+"requests return zero. (On Linux, this is done in the libc wrapper around "
+"ptrace system call. On the system call level, B<PTRACE_PEEK*> requests have "
+"a different API: they store the result at the address specified by I<data> "
+"parameter, and return value is the error flag.)"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1732
+#: build/C/man2/ptrace.2:1801
+msgid ""
+"On error, all requests return -1, and I<errno> is set appropriately. Since "
+"the value returned by a successful B<PTRACE_PEEK*> request may be -1, the "
+"caller must clear I<errno> before the call, and then check it afterward to "
+"determine whether or not an error occurred."
+msgstr ""
+
+#. type: Plain text
+#: build/C/man2/ptrace.2:1805
msgid "(i386 only) There was an error with allocating or freeing a debug register."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1743
+#: build/C/man2/ptrace.2:1816
msgid ""
"There was an attempt to read from or write to an invalid area in the "
"tracer's or the tracee's memory, probably because the area wasn't mapped or "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1746
+#: build/C/man2/ptrace.2:1819
msgid "An attempt was made to set an invalid option."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1753
+#: build/C/man2/ptrace.2:1826
msgid ""
"I<request> is invalid, or an attempt was made to read from or write to an "
"invalid area in the tracer's or the tracee's memory, or there was a "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1766
+#: build/C/man2/ptrace.2:1839
msgid ""
"The specified process cannot be traced. This could be because the tracer "
"has insufficient privileges (the required capability is B<CAP_SYS_PTRACE>); "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1771
+#: build/C/man2/ptrace.2:1844
msgid ""
"The specified process does not exist, or is not currently being traced by "
"the caller, or is not stopped (for requests that require a stopped tracee)."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1773
+#: build/C/man2/ptrace.2:1846
msgid "SVr4, 4.3BSD."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1788
+#: build/C/man2/ptrace.2:1861
msgid ""
"Although arguments to B<ptrace>() are interpreted according to the "
"prototype given, glibc currently declares B<ptrace>() as a variadic "
#. See commit 00cd5c37afd5f431ac186dd131705048c0a11fdb
#. type: Plain text
-#: build/C/man2/ptrace.2:1793
+#: build/C/man2/ptrace.2:1866
msgid ""
"In Linux kernels before 2.6.26, B<init>(8), the process with PID 1, may not "
"be traced."
#. See http://lkml.org/lkml/2008/5/8/375
#. type: Plain text
-#: build/C/man2/ptrace.2:1800
+#: build/C/man2/ptrace.2:1873
msgid ""
"The layout of the contents of memory and the USER area are quite "
"operating-system- and architecture-specific. The offset supplied, and the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1803
+#: build/C/man2/ptrace.2:1876
msgid ""
"The size of a \"word\" is determined by the operating-system variant (e.g., "
"for 32-bit Linux it is 32 bits)."
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1811
+#: build/C/man2/ptrace.2:1884
msgid ""
"This page documents the way the B<ptrace>() call works currently in Linux. "
"Its behavior differs noticeably on other flavors of UNIX. In any case, use "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1822
+#: build/C/man2/ptrace.2:1895
msgid ""
"On hosts with 2.6 kernel headers, B<PTRACE_SETOPTIONS> is declared with a "
"different value than the one for 2.4. This leads to applications compiled "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1825
+#: build/C/man2/ptrace.2:1898
msgid ""
"Group-stop notifications are sent to the tracer, but not to real parent. "
"Last confirmed on 2.6.38.6."
#. why it is so.
#. FIXME: ^^^ need to test/verify this scenario
#. type: Plain text
-#: build/C/man2/ptrace.2:1856
+#: build/C/man2/ptrace.2:1929
msgid ""
"If a thread group leader is traced and exits by calling B<_exit>(2), a "
"B<PTRACE_EVENT_EXIT> stop will happen for it (if requested), but the "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1866
+#: build/C/man2/ptrace.2:1939
msgid ""
"A B<SIGKILL> signal may still cause a B<PTRACE_EVENT_EXIT> stop before "
"actual signal death. This may be changed in the future; B<SIGKILL> is meant "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1884
+#: build/C/man2/ptrace.2:1957
msgid ""
"Some system calls return with B<EINTR> if a signal was sent to a tracee, but "
"delivery was suppressed by the tracer. (This is very typical operation: it "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1886
+#: build/C/man2/ptrace.2:1959
#, no-wrap
msgid " strace -p E<lt>process-IDE<gt>\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1889
+#: build/C/man2/ptrace.2:1962
msgid "then, instead of the usual and expected one-line output such as"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1892
+#: build/C/man2/ptrace.2:1965
#, no-wrap
msgid " restart_syscall(E<lt>... resuming interrupted call ...E<gt>_\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1898
+#: build/C/man2/ptrace.2:1971
#, no-wrap
msgid " select(6, [5], NULL, [5], NULL_\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1902
+#: build/C/man2/ptrace.2:1975
msgid ""
"('_' denotes the cursor position), you observe more than one line. For "
"example:"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1906
+#: build/C/man2/ptrace.2:1979
#, no-wrap
msgid ""
" clock_gettime(CLOCK_MONOTONIC, {15370, 690928118}) = 0\n"
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1927
+#: build/C/man2/ptrace.2:2000
msgid ""
"What is not visible here is that the process was blocked in B<epoll_wait>(2) "
"before B<strace>(1) has attached to it. Attaching caused B<epoll_wait>(2) "
msgstr ""
#. type: Plain text
-#: build/C/man2/ptrace.2:1941
+#: build/C/man2/ptrace.2:2014
msgid ""
"B<gdb>(1), B<strace>(1), B<clone>(2), B<execve>(2), B<fork>(2), "
"B<gettid>(2), B<sigaction>(2), B<tgkill>(2), B<vfork>(2), B<waitpid>(2), "
msgstr ""
#. type: Plain text
-#: build/C/man2/vm86.2:46
+#: build/C/man2/vm86.2:48
msgid ""
"The system call B<vm86>() was introduced in Linux 0.97p2. In Linux 2.1.15 "
"and 2.0.28 it was renamed to B<vm86old>(), and a new B<vm86>() was "
msgstr ""
#. type: Plain text
-#: build/C/man2/vm86.2:50
+#: build/C/man2/vm86.2:52
msgid ""
"These calls cause the process to enter VM86 mode (virtual-8086 in Intel "
"literature), and are used by B<dosemu>."
msgstr ""
#. type: Plain text
-#: build/C/man2/vm86.2:52
+#: build/C/man2/vm86.2:54
msgid "VM86 mode is an emulation of real mode within a protected mode task."
msgstr ""
#. type: Plain text
-#: build/C/man2/vm86.2:62
+#: build/C/man2/vm86.2:64
msgid ""
"This return value is specific to i386 and indicates a problem with getting "
"user-space data."
msgstr ""
#. type: Plain text
-#: build/C/man2/vm86.2:66
+#: build/C/man2/vm86.2:68
msgid ""
"This return value indicates the call is not implemented on the present "
"architecture."
msgstr ""
#. type: Plain text
-#: build/C/man2/vm86.2:71
+#: build/C/man2/vm86.2:73
msgid ""
"Saved kernel stack exists. (This is a kernel sanity check; the saved stack "
"should exist only within vm86 mode itself.)"
msgstr ""
#. type: Plain text
-#: build/C/man2/vm86.2:74
+#: build/C/man2/vm86.2:76
msgid ""
"This call is specific to Linux on 32-bit Intel processors, and should not be "
"used in programs intended to be portable."