Intel PT has its own wrap search but the same pointer fixup logic as the generic auxtrace_record__default_find_snapshot(). Replace the duplicate code with auxtrace_record__snapshot_fixup().
No functional changes intended.
Signed-off-by: James Clark james.clark@linaro.org --- tools/perf/arch/x86/util/intel-pt.c | 21 +-------------------- 1 file changed, 1 insertion(+), 20 deletions(-)
diff --git a/tools/perf/arch/x86/util/intel-pt.c b/tools/perf/arch/x86/util/intel-pt.c index a533114c0048..ce854209213d 100644 --- a/tools/perf/arch/x86/util/intel-pt.c +++ b/tools/perf/arch/x86/util/intel-pt.c @@ -1150,26 +1150,7 @@ static int intel_pt_find_snapshot(struct auxtrace_record *itr, int idx, } }
- /* - * In full trace mode 'head' continually increases. However in snapshot - * mode 'head' is an offset within the buffer. Here 'old' and 'head' - * are adjusted to match the full trace case which expects that 'old' is - * always less than 'head'. - */ - if (wrapped) { - *old = *head; - *head += mm->len; - } else { - if (mm->mask) - *old &= mm->mask; - else - *old %= mm->len; - if (*old > *head) - *head += mm->len; - } - - pr_debug3("%s: wrap-around %sdetected, adjusted old head %zu adjusted new head %zu\n", - __func__, wrapped ? "" : "not ", (size_t)*old, (size_t)*head); + auxtrace_record__snapshot_fixup(mm, wrapped, head, old);
return 0;