branch_stack
void brbe_read_filtered_entries(struct perf_branch_stack *branch_stack,
struct perf_branch_entry *pbe = &branch_stack->entries[nr_filtered];
branch_stack->nr = nr_filtered;
void brbe_read_filtered_entries(struct perf_branch_stack *branch_stack,
static void brbe_read_filtered_entries(struct perf_branch_stack *branch_stack,
events_cpu->branch_stack = kmalloc(size, GFP_KERNEL);
if (!events_cpu->branch_stack)
struct perf_branch_stack *branch_stack = cpuc->branch_stack;
brbe_read_filtered_entries(branch_stack, event);
perf_sample_save_brstack(data, event, branch_stack, NULL);
struct perf_branch_stack *branch_stack;
static void process_branch_stack(struct branch_stack *bs, struct addr_location *al,
hist__account_cycles(sample->branch_stack, al, sample, /*nonany_branch_mode=*/false,
process_branch_stack(sample->branch_stack, al, sample);
hist__account_cycles(sample->branch_stack, &al, sample,
struct branch_stack dummy_bs = { .nr = 0, .hw_idx = 0 };
struct branch_stack *orig_bs = sample->branch_stack;
if (!sample->branch_stack)
sample->branch_stack = &dummy_bs;
sample->branch_stack = orig_bs;
sample->branch_stack = orig_bs;
if (!rec->opts.branch_stack)
OPT_CALLBACK_NOOPT('b', "branch-any", &record.opts.branch_stack,
OPT_CALLBACK('j', "branch-filter", &record.opts.branch_stack,
if (!sample->branch_stack)
hist__account_cycles(sample->branch_stack, &al, sample,
struct branch_stack *br = sample->branch_stack;
struct branch_stack *br = sample->branch_stack;
struct branch_stack *br = sample->branch_stack;
struct branch_stack *br = sample->branch_stack;
OPT_CALLBACK_NOOPT('b', "branch-any", &opts->branch_stack,
OPT_CALLBACK('j', "branch-filter", &opts->branch_stack,
if (!opts->branch_stack)
opts->branch_stack = PERF_SAMPLE_BRANCH_ANY;
if (opts->branch_stack && callchain_param.enabled)
if (opts->branch_stack) {
hist__account_cycles(iter->sample->branch_stack, al, iter->sample,
!(top->record_opts.branch_stack & PERF_SAMPLE_BRANCH_ANY),
COMP(branch_stack->nr);
COMP(branch_stack->hw_idx);
for (i = 0; i < s1->branch_stack->nr; i++) {
MCOMP(branch_stack->entries[i]);
struct branch_stack branch_stack;
} branch_stack = {
.branch_stack = &branch_stack.branch_stack,
#define FLAG(s) s->branch_stack->entries[i].flags
struct branch_stack *last_branch;
size_t sz = sizeof(struct branch_stack);
struct branch_stack *bstack = speq->last_branch;
size_t sz = sizeof(struct branch_stack) +
sample.branch_stack = speq->last_branch;
sample.branch_stack = speq->last_branch;
u64 *entry = (u64 *)sample->branch_stack;
struct branch_stack *bs_src = tidq->last_branch_rb;
struct branch_stack *bs_dst = tidq->last_branch;
struct branch_stack *bs = tidq->last_branch_rb;
sample.branch_stack = tidq->last_branch;
sample.branch_stack = (struct branch_stack *)&dummy_bs;
size_t sz = sizeof(struct branch_stack);
struct branch_stack *last_branch;
struct branch_stack *last_branch_rb;
if (sample->branch_stack) {
d_sample.brstack_nr = sample->branch_stack->nr;
struct branch_stack;
if (!opts->branch_stack) {
if (opts->branch_stack && !evsel->no_aux_samples) {
attr->branch_sample_type = opts->branch_stack;
data->branch_stack = (struct branch_stack *)array++;
if (data->branch_stack->nr > max_branch_nr)
sz = data->branch_stack->nr * sizeof(struct branch_entry);
e = &data->branch_stack->entries[0];
e = (struct branch_entry *)&data->branch_stack->hw_idx;
for (i = 0; i < data->branch_stack->nr; i++, e++)
sz = data->branch_stack->nr * sizeof(u64);
FEAT_OPN(BRANCH_STACK, branch_stack, false),
iter->total = sample->branch_stack->nr;
void hist__account_cycles(struct branch_stack *bs, struct addr_location *al,
struct branch_stack;
void hist__account_cycles(struct branch_stack *bs, struct addr_location *al,
static struct branch_stack *intel_pt_alloc_br_stack(unsigned int entry_cnt)
size_t sz = sizeof(struct branch_stack);
sample->branch_stack = pt->br_stack;
struct branch_stack *br_stack;
sample.branch_stack = (struct branch_stack *)&dummy_bs;
sample->branch_stack = ptq->last_branch;
struct branch_stack *last_branch;
static void intel_pt_add_lbrs(struct branch_stack *br_stack,
sample.branch_stack = ptq->last_branch;
if (pt->synth_opts.add_last_branch && !sample->branch_stack)
const struct branch_stack *bs = sample->branch_stack;
struct branch_stack *lbr_stack = sample->branch_stack;
struct branch_stack *cur_stack = cur->branch_stack;
struct branch_stack *prev_stack = prev->branch_stack;
struct branch_stack *branch = sample->branch_stack;
struct branch_stack;
sample.branch_stack = NULL;
u64 branch_stack;
struct branch_stack *branch_stack;
struct branch_stack *br = sample->branch_stack;
struct branch_stack *br = sample->branch_stack;
struct branch_stack *lbr_stack = sample->branch_stack;
printf("%s: nr:%" PRIu64 "\n", "... branch stack", sample->branch_stack->nr);
printf("%s: nr:%" PRIu64 "\n", "... branch callstack", sample->branch_stack->nr+1);
for (i = 0; i < sample->branch_stack->nr; i++) {
sample->branch_stack->nr, br_cntr_width, br_cntr_nr);
for (i = 0; i < sample->branch_stack->nr; i++)
sz = sample->branch_stack->nr * sizeof(struct branch_entry);
sz = sample->branch_stack->nr * sizeof(struct branch_entry);
*array++ = sample->branch_stack->nr;
*array++ = sample->branch_stack->hw_idx;
struct branch_stack *br_stack_rb;
size_t sz = sizeof(struct branch_stack);
struct branch_stack *bs = ts->br_stack_rb;
struct branch_stack *dst, unsigned int sz)
struct branch_stack *src;
struct branch_stack *dst, unsigned int sz,
struct branch_stack *src;
struct branch_stack *dst, unsigned int sz);
struct branch_stack *dst, unsigned int sz,