On Tue, Jul 11, 2017 at 11:00:57PM +0800, Jin Yao wrote: > PERF_BR_NONE : unknown
I would suggest PERF_BR_UNKNOWN or PERF_BR_MISC, since PERF_BR_NONE reads like it wasn't a branch at all. > PERF_BR_COND :conditional > PERF_BR_UNCOND : unconditional > PERF_BR_IND : indirect > PERF_BR_CALL : function call > PERF_BR_IND_CALL : indirect function call > PERF_BR_RET : function return > PERF_BR_SYSCALL : syscall > PERF_BR_SYSRET : syscall return > PERF_BR_COND_CALL : conditional function call > PERF_BR_COND_RET : conditional function return > > The patch also adds a new field type (4 bits) in perf_branch_entry > to record the branch type (reserve 5 for future branch types) What's up with that 5 ? I can't see anything like that in the patch itself: > @@ -1024,7 +1048,8 @@ struct perf_branch_entry { > in_tx:1, /* in transaction */ > abort:1, /* transaction abort */ > cycles:16, /* cycle count to last branch */ > - reserved:44; > + type:4, /* branch type */ > + reserved:40; > };