[PATCH 0/3] perf annotate-data: Implement folding in TUI browser

From: Namhyung Kim
Date: Mon Aug 12 2024 - 15:45:09 EST


Hello,

I've implemented the folding logic to expand/collapse the current entry
in the TUI data type browser. Users can use 'e' or 'E' to toggle the
entry (with or without children, respectively).

Ax example output looks like below.

Annotate type: 'struct socket' (1 samples)
Percent Offset Size Field
- 100.00 0 128 struct socket { ◆
0.00 0 4 socket_state state; ▒
0.00 4 2 short int type; ▒
0.00 8 8 long unsigned int flags; ▒
0.00 16 8 struct file* file; ▒
100.00 24 8 struct sock* sk; ▒
0.00 32 8 struct proto_ops* ops; ▒
- 0.00 64 64 struct socket_wq wq { ▒
- 0.00 64 24 wait_queue_head_t wait { ▒
+ 0.00 64 4 spinlock_t lock; ▒
- 0.00 72 16 struct list_head head { ▒
0.00 72 8 struct list_head* next; ▒
0.00 80 8 struct list_head* prev; ▒
}; ▒
}; ▒
0.00 88 8 struct fasync_struct* fasync_list; ▒
0.00 96 8 long unsigned int flags; ▒
+ 0.00 104 16 struct callback_head rcu; ▒
}; ▒
}; ▒

It hides the detail of spinlock_t and struct callback_head.

Thanks,
Namhyung


Namhyung Kim (3):
perf annotate-data: Support folding in TUI browser
perf annotate-data: Implement folding in TUI browser
perf annotate-data: Show first-level children by default in TUI

tools/perf/ui/browsers/annotate-data.c | 343 ++++++++++++++++++++++---
1 file changed, 313 insertions(+), 30 deletions(-)

--
2.46.0.76.ge559c4bf1a-goog