• Home
  • Raw
  • Download

Lines Matching full:al

1111 			struct annotation_line *al = notes->offsets[offset];  in annotation__count_and_fill()  local
1113 if (al && al->cycles && al->cycles->ipc == 0.0) { in annotation__count_and_fill()
1114 al->cycles->ipc = ipc; in annotation__count_and_fill()
1147 struct annotation_line *al; in annotation__compute_ipc() local
1149 al = notes->offsets[offset]; in annotation__compute_ipc()
1150 if (al && al->cycles == NULL) { in annotation__compute_ipc()
1151 al->cycles = zalloc(sizeof(*al->cycles)); in annotation__compute_ipc()
1152 if (al->cycles == NULL) { in annotation__compute_ipc()
1159 if (al && ch->num_aggr) { in annotation__compute_ipc()
1160 al->cycles->avg = ch->cycles_aggr / ch->num_aggr; in annotation__compute_ipc()
1161 al->cycles->max = ch->cycles_max; in annotation__compute_ipc()
1162 al->cycles->min = ch->cycles_min; in annotation__compute_ipc()
1172 struct annotation_line *al = notes->offsets[offset]; in annotation__compute_ipc() local
1173 if (al) in annotation__compute_ipc()
1174 zfree(&al->cycles); in annotation__compute_ipc()
1245 static void annotation_line__init(struct annotation_line *al, in annotation_line__init() argument
1249 al->offset = args->offset; in annotation_line__init()
1250 al->line = strdup(args->line); in annotation_line__init()
1251 al->line_nr = args->line_nr; in annotation_line__init()
1252 al->fileloc = args->fileloc; in annotation_line__init()
1253 al->data_nr = nr; in annotation_line__init()
1256 static void annotation_line__exit(struct annotation_line *al) in annotation_line__exit() argument
1258 zfree_srcline(&al->path); in annotation_line__exit()
1259 zfree(&al->line); in annotation_line__exit()
1260 zfree(&al->cycles); in annotation_line__exit()
1265 struct annotation_line *al; in disasm_line_size() local
1267 return (sizeof(struct disasm_line) + (sizeof(al->data[0]) * nr)); in disasm_line_size()
1293 annotation_line__init(&dl->al, args, nr); in disasm_line__new()
1294 if (dl->al.line == NULL) in disasm_line__new()
1298 if (disasm_line__parse(dl->al.line, &dl->ins.name, &dl->ops.raw) < 0) in disasm_line__new()
1307 zfree(&dl->al.line); in disasm_line__new()
1320 annotation_line__exit(&dl->al); in disasm_line__free()
1391 static void annotation_line__add(struct annotation_line *al, struct list_head *head) in annotation_line__add() argument
1393 list_add_tail(&al->node, head); in annotation_line__add()
1490 s64 offset = dl->al.offset; in disasm_line__print()
1496 color_fprintf(stdout, annotate__asm_color(br), "%s", dl->al.line); in disasm_line__print()
1502 annotation_line__print(struct annotation_line *al, struct symbol *sym, u64 start, in annotation_line__print() argument
1507 struct disasm_line *dl = container_of(al, struct disasm_line, al); in annotation_line__print()
1510 if (al->offset != -1) { in annotation_line__print()
1516 for (i = 0; i < al->data_nr; i++) { in annotation_line__print()
1519 percent = annotation_data__percent(&al->data[i], in annotation_line__print()
1526 if (al->data_nr > nr_percent) in annotation_line__print()
1527 nr_percent = al->data_nr; in annotation_line__print()
1537 if (queue == al) in annotation_line__print()
1548 struct annotation_data *data = &al->data[i]; in annotation_line__print()
1573 if (al->path) { in annotation_line__print()
1574 if (!prev_line || strcmp(prev_line, al->path)) { in annotation_line__print()
1575 color_fprintf(stdout, color, " // %s", al->path); in annotation_line__print()
1576 prev_line = al->path; in annotation_line__print()
1592 if (!*al->line) in annotation_line__print()
1595 printf(" %*s: %-*d %s\n", width, " ", addr_fmt_width, al->line_nr, al->line); in annotation_line__print()
1683 annotation_line__add(&dl->al, &notes->src->source); in symbol__parse_objdump_line()
1699 dl = list_entry(list->prev, struct disasm_line, al.node); in delete_last_nop()
1705 if (!strstr(dl->al.line, " nop ") && in delete_last_nop()
1706 !strstr(dl->al.line, " nopl ") && in delete_last_nop()
1707 !strstr(dl->al.line, " nopw ")) in delete_last_nop()
1711 list_del_init(&dl->al.node); in delete_last_nop()
1971 annotation_line__add(&dl->al, in symbol__disassemble_bpf()
1983 annotation_line__add(&dl->al, &notes->src->source); in symbol__disassemble_bpf()
2017 annotation_line__add(&dl->al, &notes->src->source); in symbol__disassemble_bpf_image()
2300 struct annotation_line *al, *next; in annotation__calc_percent() local
2303 list_for_each_entry(al, &notes->src->source, node) { in annotation__calc_percent()
2307 if (al->offset == -1) in annotation__calc_percent()
2310 next = annotation_line__next(al, &notes->src->source); in annotation__calc_percent()
2318 BUG_ON(i >= al->data_nr); in annotation__calc_percent()
2321 data = &al->data[i++]; in annotation__calc_percent()
2323 calc_percent(sym_hist, hists, data, al->offset, end); in annotation__calc_percent()
2378 static void insert_source_line(struct rb_root *root, struct annotation_line *al) in insert_source_line() argument
2390 ret = strcmp(iter->path, al->path); in insert_source_line()
2392 for (i = 0; i < al->data_nr; i++) { in insert_source_line()
2393 iter->data[i].percent_sum += annotation_data__percent(&al->data[i], in insert_source_line()
2405 for (i = 0; i < al->data_nr; i++) { in insert_source_line()
2406 al->data[i].percent_sum = annotation_data__percent(&al->data[i], in insert_source_line()
2410 rb_link_node(&al->rb_node, parent, p); in insert_source_line()
2411 rb_insert_color(&al->rb_node, root); in insert_source_line()
2427 static void __resort_source_line(struct rb_root *root, struct annotation_line *al) in __resort_source_line() argument
2437 if (cmp_source_line(al, iter)) in __resort_source_line()
2443 rb_link_node(&al->rb_node, parent, p); in __resort_source_line()
2444 rb_insert_color(&al->rb_node, root); in __resort_source_line()
2449 struct annotation_line *al; in resort_source_line() local
2456 al = rb_entry(node, struct annotation_line, rb_node); in resort_source_line()
2460 __resort_source_line(dest_root, al); in resort_source_line()
2467 struct annotation_line *al; in print_summary() local
2485 al = rb_entry(node, struct annotation_line, rb_node); in print_summary()
2486 for (i = 0; i < al->data_nr; i++) { in print_summary()
2487 percent = al->data[i].percent_sum; in print_summary()
2495 path = al->path; in print_summary()
2681 struct annotation_line *al; in symbol__annotate_fprintf2() local
2683 list_for_each_entry(al, &notes->src->source, node) { in symbol__annotate_fprintf2()
2684 if (annotation_line__filter(al, notes)) in symbol__annotate_fprintf2()
2686 annotation_line__write(al, notes, &wops); in symbol__annotate_fprintf2()
2748 struct annotation_line *al, *n; in annotated_source__purge() local
2750 list_for_each_entry_safe(al, n, &as->source, node) { in annotated_source__purge()
2751 list_del_init(&al->node); in annotated_source__purge()
2752 disasm_line__free(disasm_line(al)); in annotated_source__purge()
2760 if (dl->al.offset == -1) in disasm_line__fprintf()
2761 return fprintf(fp, "%s\n", dl->al.line); in disasm_line__fprintf()
2763 printed = fprintf(fp, "%#" PRIx64 " %s", dl->al.offset, dl->ins.name); in disasm_line__fprintf()
2778 list_for_each_entry(pos, head, al.node) in disasm__fprintf()
2803 struct annotation_line *al = notes->offsets[offset]; in annotation__mark_jump_targets() local
2806 dl = disasm_line(al); in annotation__mark_jump_targets()
2811 al = notes->offsets[dl->ops.target.offset]; in annotation__mark_jump_targets()
2817 if (al == NULL) in annotation__mark_jump_targets()
2820 if (++al->jump_sources > notes->max_jump_sources) in annotation__mark_jump_targets()
2821 notes->max_jump_sources = al->jump_sources; in annotation__mark_jump_targets()
2827 struct annotation_line *al; in annotation__set_offsets() local
2834 list_for_each_entry(al, &src->source, node) { in annotation__set_offsets()
2835 size_t line_len = strlen(al->line); in annotation__set_offsets()
2839 al->idx = src->nr_entries++; in annotation__set_offsets()
2840 if (al->offset != -1) { in annotation__set_offsets()
2841 al->idx_asm = src->nr_asm_entries++; in annotation__set_offsets()
2849 if (al->offset < size) in annotation__set_offsets()
2850 notes->offsets[al->offset] = al; in annotation__set_offsets()
2852 al->idx_asm = -1; in annotation__set_offsets()
2868 struct annotation_line *al; in annotation__max_ins_name() local
2870 list_for_each_entry(al, &notes->src->source, node) { in annotation__max_ins_name()
2871 if (al->offset == -1) in annotation__max_ins_name()
2874 len = strlen(disasm_line(al)->ins.name); in annotation__max_ins_name()
2921 struct annotation_line *al; in annotation__calc_lines() local
2924 list_for_each_entry(al, &notes->src->source, node) { in annotation__calc_lines()
2929 for (i = 0; i < al->data_nr; i++) { in annotation__calc_lines()
2932 percent = annotation_data__percent(&al->data[i], in annotation__calc_lines()
2943 al->path = get_srcline(map__dso(ms->map), addr + al->offset, NULL, in annotation__calc_lines()
2944 false, true, ms->sym->start + al->offset); in annotation__calc_lines()
2945 insert_source_line(&tmp_root, al); in annotation__calc_lines()
3032 static double annotation_line__max_percent(struct annotation_line *al, in annotation_line__max_percent() argument
3042 percent = annotation_data__percent(&al->data[i], in annotation_line__max_percent()
3063 fwd = dl->ops.target.offset > dl->al.offset; in disasm_line__write()
3100 static void __annotation_line__write(struct annotation_line *al, struct annotation *notes, in __annotation_line__write() argument
3110 double percent_max = annotation_line__max_percent(al, notes, percent_type); in __annotation_line__write()
3117 if (first_line && (al->offset == -1 || percent_max == 0.0)) { in __annotation_line__write()
3118 if (notes->branch && al->cycles) { in __annotation_line__write()
3119 if (al->cycles->ipc == 0.0 && al->cycles->avg == 0) in __annotation_line__write()
3125 if (al->offset != -1 && percent_max != 0.0) { in __annotation_line__write()
3131 percent = annotation_data__percent(&al->data[i], percent_type); in __annotation_line__write()
3135 obj__printf(obj, "%11" PRIu64 " ", al->data[i].he.period); in __annotation_line__write()
3138 al->data[i].he.nr_samples); in __annotation_line__write()
3156 if (al->cycles && al->cycles->ipc) in __annotation_line__write()
3157 obj__printf(obj, "%*.2f ", ANNOTATION__IPC_WIDTH - 1, al->cycles->ipc); in __annotation_line__write()
3164 if (al->cycles && al->cycles->avg) in __annotation_line__write()
3166 ANNOTATION__CYCLES_WIDTH - 1, al->cycles->avg); in __annotation_line__write()
3175 if (al->cycles) { in __annotation_line__write()
3180 al->cycles->avg, al->cycles->min, in __annotation_line__write()
3181 al->cycles->max); in __annotation_line__write()
3196 if (show_title && !*al->line) { in __annotation_line__write()
3204 if (!*al->line) in __annotation_line__write()
3206 else if (al->offset == -1) { in __annotation_line__write()
3207 if (al->line_nr && annotate_opts.show_linenr) in __annotation_line__write()
3208 printed = scnprintf(bf, sizeof(bf), "%-*d ", notes->widths.addr + 1, al->line_nr); in __annotation_line__write()
3212 obj__printf(obj, "%-*s", width - printed - pcnt_width - cycles_width + 1, al->line); in __annotation_line__write()
3214 u64 addr = al->offset; in __annotation_line__write()
3223 if (al->jump_sources && in __annotation_line__write()
3229 al->jump_sources); in __annotation_line__write()
3230 prev = obj__set_jumps_percent_color(obj, al->jump_sources, in __annotation_line__write()
3238 } else if (ins__is_call(&disasm_line(al)->ins) && in __annotation_line__write()
3255 disasm_line__write(disasm_line(al), notes, obj, bf, sizeof(bf), obj__printf, obj__write_graph); in __annotation_line__write()
3262 void annotation_line__write(struct annotation_line *al, struct annotation *notes, in annotation_line__write() argument
3265 __annotation_line__write(al, notes, wops->first_line, wops->current_entry, in annotation_line__write()