Skip to content

Commit 5227232

Browse files
committed
Implement very basic TSX support
`tx abrt` is treated as a branch, i.e. we do not unwind any callstacks that may have been created during the transaction when it aborts. This should be sufficient for simple uses of TSX. Refs #284
1 parent a8d3a3c commit 5227232

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/perf_decode.ml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@ let perf_callstack_entry_re = Re.Perl.re "^\t *([0-9a-f]+) (.*)$" |> Re.compile
2222

2323
let perf_branches_event_re =
2424
Re.Perl.re
25-
{|^ *(call|return|tr strt|syscall|sysret|hw int|iret|tr end|tr strt tr end|tr end (?:async|call|return|syscall|sysret|iret)|jmp|jcc) +([0-9a-f]+) (.*) => +([0-9a-f]+) (.*)$|}
25+
{|^ *(call|return|tr strt|syscall|sysret|hw int|iret|tx abrt|tr end|tr strt tr end|tr end (?:async|call|return|syscall|sysret|iret)|jmp|jcc) +(?:\(x\) +)?([0-9a-f]+) (.*) => +([0-9a-f]+) (.*)$|}
2626
|> Re.compile
2727
;;
2828

2929
let perf_cbr_event_re =
30-
Re.Perl.re {|^ *([a-z ]*)? +cbr: +([0-9]+ +freq: +([0-9]+) MHz)?(.*)$|} |> Re.compile
30+
Re.Perl.re {|^ *([a-z )(]*)? +cbr: +([0-9]+ +freq: +([0-9]+) MHz)?(.*)$|} |> Re.compile
3131
;;
3232

3333
let trace_error_re =
@@ -263,6 +263,7 @@ let parse_perf_branches_event ?perf_maps (thread : Event.Thread.t) time line : E
263263
| "iret" -> Some Iret
264264
| "sysret" -> Some Sysret
265265
| "async" -> Some Async
266+
| "tx abrt" -> Some Jump
266267
| "" -> None
267268
| _ ->
268269
printf "Warning: skipping unrecognized perf output: %s\n%!" line;

0 commit comments

Comments
 (0)