1*0aa81428SVeronika Molnarova# SPDX-License-Identifier: GPL-2.0 2*0aa81428SVeronika Molnarova 3*0aa81428SVeronika Molnarovaexport RE_NUMBER="[0-9\.]+" 4*0aa81428SVeronika Molnarova# Number 5*0aa81428SVeronika Molnarova# Examples: 6*0aa81428SVeronika Molnarova# 123.456 7*0aa81428SVeronika Molnarova 8*0aa81428SVeronika Molnarova 9*0aa81428SVeronika Molnarovaexport RE_NUMBER_HEX="[0-9A-Fa-f]+" 10*0aa81428SVeronika Molnarova# Hexadecimal number 11*0aa81428SVeronika Molnarova# Examples: 12*0aa81428SVeronika Molnarova# 1234 13*0aa81428SVeronika Molnarova# a58d 14*0aa81428SVeronika Molnarova# aBcD 15*0aa81428SVeronika Molnarova# deadbeef 16*0aa81428SVeronika Molnarova 17*0aa81428SVeronika Molnarova 18*0aa81428SVeronika Molnarovaexport RE_DATE_YYYYMMDD="[0-9]{4}-(?:(?:01|03|05|07|08|10|12)-(?:[0-2][0-9]|3[0-1])|02-[0-2][0-9]|(?:(?:04|06|09|11)-(?:[0-2][0-9]|30)))" 19*0aa81428SVeronika Molnarova# Date in YYYY-MM-DD form 20*0aa81428SVeronika Molnarova# Examples: 21*0aa81428SVeronika Molnarova# 1990-02-29 22*0aa81428SVeronika Molnarova# 0015-07-31 23*0aa81428SVeronika Molnarova# 2456-12-31 24*0aa81428SVeronika Molnarova#! 2012-13-01 25*0aa81428SVeronika Molnarova#! 1963-09-31 26*0aa81428SVeronika Molnarova 27*0aa81428SVeronika Molnarova 28*0aa81428SVeronika Molnarovaexport RE_TIME="(?:[0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]" 29*0aa81428SVeronika Molnarova# Time 30*0aa81428SVeronika Molnarova# Examples: 31*0aa81428SVeronika Molnarova# 15:12:27 32*0aa81428SVeronika Molnarova# 23:59:59 33*0aa81428SVeronika Molnarova#! 24:00:00 34*0aa81428SVeronika Molnarova#! 11:25:60 35*0aa81428SVeronika Molnarova#! 17:60:15 36*0aa81428SVeronika Molnarova 37*0aa81428SVeronika Molnarova 38*0aa81428SVeronika Molnarovaexport RE_DATE_TIME="\w+\s+\w+\s+$RE_NUMBER\s+$RE_TIME\s+$RE_NUMBER" 39*0aa81428SVeronika Molnarova# Time and date 40*0aa81428SVeronika Molnarova# Examples: 41*0aa81428SVeronika Molnarova# Wed Feb 12 10:46:26 2020 42*0aa81428SVeronika Molnarova# Mon Mar 2 13:27:06 2020 43*0aa81428SVeronika Molnarova#! St úno 12 10:57:21 CET 2020 44*0aa81428SVeronika Molnarova#! Po úno 14 15:17:32 2010 45*0aa81428SVeronika Molnarova 46*0aa81428SVeronika Molnarova 47*0aa81428SVeronika Molnarovaexport RE_ADDRESS="0x$RE_NUMBER_HEX" 48*0aa81428SVeronika Molnarova# Memory address 49*0aa81428SVeronika Molnarova# Examples: 50*0aa81428SVeronika Molnarova# 0x123abc 51*0aa81428SVeronika Molnarova# 0xffffffff9abe8ae8 52*0aa81428SVeronika Molnarova# 0x0 53*0aa81428SVeronika Molnarova 54*0aa81428SVeronika Molnarova 55*0aa81428SVeronika Molnarovaexport RE_ADDRESS_NOT_NULL="0x[0-9A-Fa-f]*[1-9A-Fa-f]+[0-9A-Fa-f]*" 56*0aa81428SVeronika Molnarova# Memory address (not NULL) 57*0aa81428SVeronika Molnarova# Examples: 58*0aa81428SVeronika Molnarova# 0xffffffff9abe8ae8 59*0aa81428SVeronika Molnarova#! 0x0 60*0aa81428SVeronika Molnarova#! 0x0000000000000000 61*0aa81428SVeronika Molnarova 62*0aa81428SVeronika Molnarovaexport RE_PROCESS_PID="[^\/]+\/\d+" 63*0aa81428SVeronika Molnarova# A process with PID 64*0aa81428SVeronika Molnarova# Example: 65*0aa81428SVeronika Molnarova# sleep/4102 66*0aa81428SVeronika Molnarova# test_overhead./866185 67*0aa81428SVeronika Molnarova# in:imjournal/1096 68*0aa81428SVeronika Molnarova# random#$& test/866607 69*0aa81428SVeronika Molnarova 70*0aa81428SVeronika Molnarovaexport RE_EVENT_ANY="[\w\-\:\/_=,]+" 71*0aa81428SVeronika Molnarova# Name of any event (universal) 72*0aa81428SVeronika Molnarova# Examples: 73*0aa81428SVeronika Molnarova# cpu-cycles 74*0aa81428SVeronika Molnarova# cpu/event=12,umask=34/ 75*0aa81428SVeronika Molnarova# r41e1 76*0aa81428SVeronika Molnarova# nfs:nfs_getattr_enter 77*0aa81428SVeronika Molnarova 78*0aa81428SVeronika Molnarova 79*0aa81428SVeronika Molnarovaexport RE_EVENT="[\w\-:_]+" 80*0aa81428SVeronika Molnarova# Name of an usual event 81*0aa81428SVeronika Molnarova# Examples: 82*0aa81428SVeronika Molnarova# cpu-cycles 83*0aa81428SVeronika Molnarova 84*0aa81428SVeronika Molnarova 85*0aa81428SVeronika Molnarovaexport RE_EVENT_RAW="r$RE_NUMBER_HEX" 86*0aa81428SVeronika Molnarova# Specification of a raw event 87*0aa81428SVeronika Molnarova# Examples: 88*0aa81428SVeronika Molnarova# r41e1 89*0aa81428SVeronika Molnarova# r1a 90*0aa81428SVeronika Molnarova 91*0aa81428SVeronika Molnarova 92*0aa81428SVeronika Molnarovaexport RE_EVENT_CPU="cpu/(\w+=$RE_NUMBER_HEX,?)+/p*" 93*0aa81428SVeronika Molnarova# Specification of a CPU event 94*0aa81428SVeronika Molnarova# Examples: 95*0aa81428SVeronika Molnarova# cpu/event=12,umask=34/pp 96*0aa81428SVeronika Molnarova 97*0aa81428SVeronika Molnarova 98*0aa81428SVeronika Molnarovaexport RE_EVENT_UNCORE="uncore/[\w_]+/" 99*0aa81428SVeronika Molnarova# Specification of an uncore event 100*0aa81428SVeronika Molnarova# Examples: 101*0aa81428SVeronika Molnarova# uncore/qhl_request_local_reads/ 102*0aa81428SVeronika Molnarova 103*0aa81428SVeronika Molnarova 104*0aa81428SVeronika Molnarovaexport RE_EVENT_SUBSYSTEM="[\w\-]+:[\w\-]+" 105*0aa81428SVeronika Molnarova# Name of an event from subsystem 106*0aa81428SVeronika Molnarova# Examples: 107*0aa81428SVeronika Molnarova# ext4:ext4_ordered_write_end 108*0aa81428SVeronika Molnarova# sched:sched_switch 109*0aa81428SVeronika Molnarova 110*0aa81428SVeronika Molnarova 111*0aa81428SVeronika Molnarovaexport RE_FILE_NAME="[\w\+\.-]+" 112*0aa81428SVeronika Molnarova# A filename 113*0aa81428SVeronika Molnarova# Examples: 114*0aa81428SVeronika Molnarova# libstdc++.so.6 115*0aa81428SVeronika Molnarova#! some/path 116*0aa81428SVeronika Molnarova 117*0aa81428SVeronika Molnarova 118*0aa81428SVeronika Molnarovaexport RE_PATH_ABSOLUTE="(?:\/$RE_FILE_NAME)+" 119*0aa81428SVeronika Molnarova# A full filepath 120*0aa81428SVeronika Molnarova# Examples: 121*0aa81428SVeronika Molnarova# /usr/lib64/somelib.so.5.4.0 122*0aa81428SVeronika Molnarova# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko 123*0aa81428SVeronika Molnarova# /usr/bin/mv 124*0aa81428SVeronika Molnarova#! some/relative/path 125*0aa81428SVeronika Molnarova#! ./some/relative/path 126*0aa81428SVeronika Molnarova 127*0aa81428SVeronika Molnarova 128*0aa81428SVeronika Molnarovaexport RE_PATH="(?:$RE_FILE_NAME)?$RE_PATH_ABSOLUTE" 129*0aa81428SVeronika Molnarova# A filepath 130*0aa81428SVeronika Molnarova# Examples: 131*0aa81428SVeronika Molnarova# /usr/lib64/somelib.so.5.4.0 132*0aa81428SVeronika Molnarova# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko 133*0aa81428SVeronika Molnarova# ./.emacs 134*0aa81428SVeronika Molnarova# src/fs/file.c 135*0aa81428SVeronika Molnarova 136*0aa81428SVeronika Molnarova 137*0aa81428SVeronika Molnarovaexport RE_DSO="(?:$RE_PATH_ABSOLUTE(?: \(deleted\))?|\[kernel\.kallsyms\]|\[unknown\]|\[vdso\]|\[kernel\.vmlinux\][\.\w]*)" 138*0aa81428SVeronika Molnarova# A DSO name in various result tables 139*0aa81428SVeronika Molnarova# Examples: 140*0aa81428SVeronika Molnarova# /usr/lib64/somelib.so.5.4.0 141*0aa81428SVeronika Molnarova# /usr/bin/somebinart (deleted) 142*0aa81428SVeronika Molnarova# /lib/modules/4.3.0-rc5/kernel/fs/xfs/xfs.ko 143*0aa81428SVeronika Molnarova# [kernel.kallsyms] 144*0aa81428SVeronika Molnarova# [kernel.vmlinux] 145*0aa81428SVeronika Molnarova# [vdso] 146*0aa81428SVeronika Molnarova# [unknown] 147*0aa81428SVeronika Molnarova 148*0aa81428SVeronika Molnarova 149*0aa81428SVeronika Molnarovaexport RE_LINE_COMMENT="^#.*" 150*0aa81428SVeronika Molnarova# A comment line 151*0aa81428SVeronika Molnarova# Examples: 152*0aa81428SVeronika Molnarova# # Started on Thu Sep 10 11:43:00 2015 153*0aa81428SVeronika Molnarova 154*0aa81428SVeronika Molnarova 155*0aa81428SVeronika Molnarovaexport RE_LINE_EMPTY="^\s*$" 156*0aa81428SVeronika Molnarova# An empty line with possible whitespaces 157*0aa81428SVeronika Molnarova# Examples: 158*0aa81428SVeronika Molnarova# 159*0aa81428SVeronika Molnarova 160*0aa81428SVeronika Molnarova 161*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD1="^\[\s+perf\s+record:\s+Woken up $RE_NUMBER times? to write data\s+\].*$" 162*0aa81428SVeronika Molnarova# The first line of perf-record "OK" output 163*0aa81428SVeronika Molnarova# Examples: 164*0aa81428SVeronika Molnarova# [ perf record: Woken up 1 times to write data ] 165*0aa81428SVeronika Molnarova 166*0aa81428SVeronika Molnarova 167*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD2="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\.data(?:\.\d+)?\s*\(~?$RE_NUMBER samples\)\s+\].*$" 168*0aa81428SVeronika Molnarova# The second line of perf-record "OK" output 169*0aa81428SVeronika Molnarova# Examples: 170*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ] 171*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ] 172*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ] 173*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ] 174*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ] 175*0aa81428SVeronika Molnarova 176*0aa81428SVeronika Molnarova 177*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD2_TOLERANT="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\.data(?:\.\d+)?\s*(?:\(~?$RE_NUMBER samples\))?\s+\].*$" 178*0aa81428SVeronika Molnarova# The second line of perf-record "OK" output, even no samples is OK here 179*0aa81428SVeronika Molnarova# Examples: 180*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ] 181*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf.data (~109 samples) ] 182*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB /some/temp/dir/perf.data (109 samples) ] 183*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB ./perf.data (109 samples) ] 184*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB ./perf.data.3 (109 samples) ] 185*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf.data ] 186*0aa81428SVeronika Molnarova 187*0aa81428SVeronika Molnarova 188*0aa81428SVeronika Molnarovaexport RE_LINE_RECORD2_TOLERANT_FILENAME="^\[\s+perf\s+record:\s+Captured and wrote $RE_NUMBER\s*MB\s+(?:[\w\+\.-]*(?:$RE_PATH)?\/)?perf\w*\.data(?:\.\d+)?\s*\(~?$RE_NUMBER samples\)\s+\].*$" 189*0aa81428SVeronika Molnarova# The second line of perf-record "OK" output 190*0aa81428SVeronika Molnarova# Examples: 191*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf.data (109 samples) ] 192*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf_ls.data (~109 samples) ] 193*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB perf_aNyCaSe.data (109 samples) ] 194*0aa81428SVeronika Molnarova# [ perf record: Captured and wrote 0.405 MB ./perfdata.data.3 (109 samples) ] 195*0aa81428SVeronika Molnarova#! [ perf record: Captured and wrote 0.405 MB /some/temp/dir/my_own.data (109 samples) ] 196*0aa81428SVeronika Molnarova#! [ perf record: Captured and wrote 0.405 MB ./UPPERCASE.data (109 samples) ] 197*0aa81428SVeronika Molnarova#! [ perf record: Captured and wrote 0.405 MB ./aNyKiNDoF.data.3 (109 samples) ] 198*0aa81428SVeronika Molnarova#! [ perf record: Captured and wrote 0.405 MB perf.data ] 199*0aa81428SVeronika Molnarova 200*0aa81428SVeronika Molnarova 201*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_FULL="^\s*$RE_NUMBER\s*\(\s*$RE_NUMBER\s*ms\s*\):\s*$RE_PROCESS_PID\s+.*\)\s+=\s+(:?\-?$RE_NUMBER|0x$RE_NUMBER_HEX).*$" 202*0aa81428SVeronika Molnarova# A line of perf-trace output 203*0aa81428SVeronika Molnarova# Examples: 204*0aa81428SVeronika Molnarova# 0.115 ( 0.005 ms): sleep/4102 open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 3 205*0aa81428SVeronika Molnarova# 0.157 ( 0.005 ms): sleep/4102 mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ) = 0x7f89d0605000 206*0aa81428SVeronika Molnarova#! 0.115 ( 0.005 ms): sleep/4102 open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 207*0aa81428SVeronika Molnarova 208*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_ONE_PROC="^\s*$RE_NUMBER\s*\(\s*$RE_NUMBER\s*ms\s*\):\s*\w+\(.*\)\s+=\s+(?:\-?$RE_NUMBER|0x$RE_NUMBER_HEX).*$" 209*0aa81428SVeronika Molnarova# A line of perf-trace output 210*0aa81428SVeronika Molnarova# Examples: 211*0aa81428SVeronika Molnarova# 0.115 ( 0.005 ms): open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 3 212*0aa81428SVeronika Molnarova# 0.157 ( 0.005 ms): mmap(len: 3932736, prot: EXEC|READ, flags: PRIVATE|DENYWRITE, fd: 3 ) = 0x7f89d0605000 213*0aa81428SVeronika Molnarova#! 0.115 ( 0.005 ms): open(filename: 0xd09e2ab2, flags: CLOEXEC ) = 214*0aa81428SVeronika Molnarova 215*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_CONTINUED="^\s*(:?$RE_NUMBER|\?)\s*\(\s*($RE_NUMBER\s*ms\s*)?\):\s*($RE_PROCESS_PID\s*)?\.\.\.\s*\[continued\]:\s+\w+\(\).*\s+=\s+(?:\-?$RE_NUMBER|0x$RE_NUMBER_HEX).*$" 216*0aa81428SVeronika Molnarova# A line of perf-trace output 217*0aa81428SVeronika Molnarova# Examples: 218*0aa81428SVeronika Molnarova# 0.000 ( 0.000 ms): ... [continued]: nanosleep()) = 0 219*0aa81428SVeronika Molnarova# 0.000 ( 0.000 ms): ... [continued]: nanosleep()) = 0x00000000 220*0aa81428SVeronika Molnarova# ? ( ): packagekitd/94838 ... [continued]: poll()) = 0 (Timeout) 221*0aa81428SVeronika Molnarova#! 0.000 ( 0.000 ms): ... [continued]: nanosleep()) = 222*0aa81428SVeronika Molnarova 223*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_UNFINISHED="^\s*$RE_NUMBER\s*\(\s*\):\s*$RE_PROCESS_PID\s+.*\)\s+\.\.\.\s*$" 224*0aa81428SVeronika Molnarova# A line of perf-trace output 225*0aa81428SVeronika Molnarova# Examples: 226*0aa81428SVeronika Molnarova# 901.040 ( ): in:imjournal/1096 ppoll(ufds: 0x7f701a5adb70, nfds: 1, tsp: 0x7f701a5adaf0, sigsetsize: 8) ... 227*0aa81428SVeronika Molnarova# 613.727 ( ): gmain/1099 poll(ufds: 0x56248f6b64b0, nfds: 2, timeout_msecs: 3996) ... 228*0aa81428SVeronika Molnarova 229*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_SUMMARY_HEADER="\s*syscall\s+calls\s+(?:errors\s+)?total\s+min\s+avg\s+max\s+stddev" 230*0aa81428SVeronika Molnarova# A header of a perf-trace summary table 231*0aa81428SVeronika Molnarova# Example: 232*0aa81428SVeronika Molnarova# syscall calls total min avg max stddev 233*0aa81428SVeronika Molnarova# syscall calls errors total min avg max stddev 234*0aa81428SVeronika Molnarova 235*0aa81428SVeronika Molnarova 236*0aa81428SVeronika Molnarovaexport RE_LINE_TRACE_SUMMARY_CONTENT="^\s*\w+\s+(?:$RE_NUMBER\s+){5,6}$RE_NUMBER%" 237*0aa81428SVeronika Molnarova# A line of a perf-trace summary table 238*0aa81428SVeronika Molnarova# Example: 239*0aa81428SVeronika Molnarova# open 3 0.017 0.005 0.006 0.007 10.90% 240*0aa81428SVeronika Molnarova# openat 2 0 0.017 0.008 0.009 0.010 12.29% 241*0aa81428SVeronika Molnarova 242*0aa81428SVeronika Molnarova 243*0aa81428SVeronika Molnarovaexport RE_LINE_REPORT_CONTENT="^\s+$RE_NUMBER%\s+\w+\s+\S+\s+\S+\s+\S+" # FIXME 244*0aa81428SVeronika Molnarova# A line from typicap perf report --stdio output 245*0aa81428SVeronika Molnarova# Example: 246*0aa81428SVeronika Molnarova# 100.00% sleep [kernel.vmlinux] [k] syscall_return_slowpath 247*0aa81428SVeronika Molnarova 248*0aa81428SVeronika Molnarova 249*0aa81428SVeronika Molnarovaexport RE_TASK="\s+[\w~\/ \.\+:#-]+(?:\[-1(?:\/\d+)?\]|\[\d+(?:\/\d+)?\])" 250*0aa81428SVeronika Molnarova# A name of a task used for perf sched timehist -s 251*0aa81428SVeronika Molnarova# Example: 252*0aa81428SVeronika Molnarova# sleep[62755] 253*0aa81428SVeronika Molnarova# runtest.sh[62762] 254*0aa81428SVeronika Molnarova# gmain[705/682] 255*0aa81428SVeronika Molnarova# xfsaild/dm-0[495] 256*0aa81428SVeronika Molnarova# kworker/u8:1-ev[62714] 257*0aa81428SVeronika Molnarova# :-1[-1/62756] 258*0aa81428SVeronika Molnarova# :-1[-1] 259*0aa81428SVeronika Molnarova# :-1[62756] 260*0aa81428SVeronika Molnarova 261*0aa81428SVeronika Molnarova 262*0aa81428SVeronika Molnarovaexport RE_SEGFAULT=".*(?:Segmentation\sfault|SIGSEGV|\score\s|dumped|segfault).*" 263*0aa81428SVeronika Molnarova# Possible variations of the segfault message 264*0aa81428SVeronika Molnarova# Example: 265*0aa81428SVeronika Molnarova# /bin/bash: line 1: 32 Segmentation fault timeout 15s 266*0aa81428SVeronika Molnarova# Segmentation fault (core dumped) 267*0aa81428SVeronika Molnarova# Program terminated with signal SIGSEGV 268*0aa81428SVeronika Molnarova#! WARNING: 12323431 isn't a 'cpu_core', please use a CPU list in the 'cpu_core' range (0-15) 269