Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b3e84ffa authored by Ingo Molnar's avatar Ingo Molnar
Browse files

Merge branch 'perf/core' into perf/urgent

parents 1c250d70 4694153c
Loading
Loading
Loading
Loading
+21 −4
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ all::
# Define NO_DWARF if you do not want debug-info analysis feature at all.

$(shell sh -c 'mkdir -p $(OUTPUT)scripts/{perl,python}/Perf-Trace-Util/' 2> /dev/null)
$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui,scripting-engines}/' 2> /dev/null)
$(shell sh -c 'mkdir -p $(OUTPUT)util/{ui/browsers,scripting-engines}/' 2> /dev/null)
$(shell sh -c 'mkdir $(OUTPUT)bench' 2> /dev/null)

$(OUTPUT)PERF-VERSION-FILE: .FORCE-PERF-VERSION-FILE
@@ -567,9 +567,20 @@ else
		# Fedora has /usr/include/slang/slang.h, but ubuntu /usr/include/slang.h
		BASIC_CFLAGS += -I/usr/include/slang
		EXTLIBS += -lnewt -lslang
		LIB_OBJS += $(OUTPUT)util/newt.o
		LIB_OBJS += $(OUTPUT)util/ui/setup.o
		LIB_OBJS += $(OUTPUT)util/ui/browser.o
		LIB_OBJS += $(OUTPUT)util/ui/browsers/annotate.o
		LIB_OBJS += $(OUTPUT)util/ui/browsers/hists.o
		LIB_OBJS += $(OUTPUT)util/ui/browsers/map.o
		LIB_OBJS += $(OUTPUT)util/ui/helpline.o
		LIB_OBJS += $(OUTPUT)util/ui/progress.o
		LIB_OBJS += $(OUTPUT)util/ui/util.o
		LIB_H += util/ui/browser.h
		LIB_H += util/ui/browsers/map.h
		LIB_H += util/ui/helpline.h
		LIB_H += util/ui/libslang.h
		LIB_H += util/ui/progress.h
		LIB_H += util/ui/util.h
	endif
endif

@@ -967,10 +978,16 @@ $(OUTPUT)builtin-init-db.o: builtin-init-db.c $(OUTPUT)PERF-CFLAGS
$(OUTPUT)util/config.o: util/config.c $(OUTPUT)PERF-CFLAGS
	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DETC_PERFCONFIG='"$(ETC_PERFCONFIG_SQ)"' $<

$(OUTPUT)util/newt.o: util/newt.c $(OUTPUT)PERF-CFLAGS
$(OUTPUT)util/ui/browser.o: util/ui/browser.c $(OUTPUT)PERF-CFLAGS
	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<

$(OUTPUT)util/ui/browser.o: util/ui/browser.c $(OUTPUT)PERF-CFLAGS
$(OUTPUT)util/ui/browsers/annotate.o: util/ui/browsers/annotate.c $(OUTPUT)PERF-CFLAGS
	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<

$(OUTPUT)util/ui/browsers/hists.o: util/ui/browsers/hists.c $(OUTPUT)PERF-CFLAGS
	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<

$(OUTPUT)util/ui/browsers/map.o: util/ui/browsers/map.c $(OUTPUT)PERF-CFLAGS
	$(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) -DENABLE_SLFUTURE_CONST $<

$(OUTPUT)util/rbtree.o: ../../lib/rbtree.c $(OUTPUT)PERF-CFLAGS
+1 −1
Original line number Diff line number Diff line
@@ -285,7 +285,7 @@ static int hist_entry__tty_annotate(struct hist_entry *he)
	LIST_HEAD(head);
	struct objdump_line *pos, *n;

	if (hist_entry__annotate(he, &head) < 0)
	if (hist_entry__annotate(he, &head, 0) < 0)
		return -1;

	if (full_paths)
+1 −1
Original line number Diff line number Diff line
@@ -23,7 +23,7 @@ int eprintf(int level, const char *fmt, ...)
	if (verbose >= level) {
		va_start(args, fmt);
		if (use_browser > 0)
			ret = browser__show_help(fmt, args);
			ret = ui_helpline__show_help(fmt, args);
		else
			ret = vfprintf(stderr, fmt, args);
		va_end(args);
+4 −5
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@ void trace_event(event_t *event);
struct ui_progress;

#ifdef NO_NEWT_SUPPORT
static inline int browser__show_help(const char *format __used, va_list ap __used)
static inline int ui_helpline__show_help(const char *format __used, va_list ap __used)
{
	return 0;
}
@@ -30,10 +30,9 @@ static inline void ui_progress__update(struct ui_progress *self __used,

static inline void ui_progress__delete(struct ui_progress *self __used) {}
#else
int browser__show_help(const char *format, va_list ap);
struct ui_progress *ui_progress__new(const char *title, u64 total);
void ui_progress__update(struct ui_progress *self, u64 curr);
void ui_progress__delete(struct ui_progress *self);
extern char ui_helpline__last_msg[];
int ui_helpline__show_help(const char *format, va_list ap);
#include "ui/progress.h"
#endif

#endif	/* __PERF_DEBUG_H */
+7 −6
Original line number Diff line number Diff line
@@ -983,9 +983,9 @@ int hist_entry__inc_addr_samples(struct hist_entry *self, u64 ip)
	return 0;
}

static struct objdump_line *objdump_line__new(s64 offset, char *line)
static struct objdump_line *objdump_line__new(s64 offset, char *line, size_t privsize)
{
	struct objdump_line *self = malloc(sizeof(*self));
	struct objdump_line *self = malloc(sizeof(*self) + privsize);

	if (self != NULL) {
		self->offset = offset;
@@ -1017,7 +1017,7 @@ struct objdump_line *objdump__get_next_ip_line(struct list_head *head,
}

static int hist_entry__parse_objdump_line(struct hist_entry *self, FILE *file,
					  struct list_head *head)
					  struct list_head *head, size_t privsize)
{
	struct symbol *sym = self->ms.sym;
	struct objdump_line *objdump_line;
@@ -1068,7 +1068,7 @@ static int hist_entry__parse_objdump_line(struct hist_entry *self, FILE *file,
			offset = -1;
	}

	objdump_line = objdump_line__new(offset, line);
	objdump_line = objdump_line__new(offset, line, privsize);
	if (objdump_line == NULL) {
		free(line);
		return -1;
@@ -1078,7 +1078,8 @@ static int hist_entry__parse_objdump_line(struct hist_entry *self, FILE *file,
	return 0;
}

int hist_entry__annotate(struct hist_entry *self, struct list_head *head)
int hist_entry__annotate(struct hist_entry *self, struct list_head *head,
			 size_t privsize)
{
	struct symbol *sym = self->ms.sym;
	struct map *map = self->ms.map;
@@ -1143,7 +1144,7 @@ int hist_entry__annotate(struct hist_entry *self, struct list_head *head)
		goto out_free_filename;

	while (!feof(file))
		if (hist_entry__parse_objdump_line(self, file, head) < 0)
		if (hist_entry__parse_objdump_line(self, file, head, privsize) < 0)
			break;

	pclose(file);
Loading