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

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

Merge branch 'perf/urgent' into perf/core



Merge reason: Queue up dependent patch.

Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parents 79b9ad36 2e600d01
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -1356,7 +1356,7 @@ static void perf_ctx_adjust_freq(struct perf_event_context *ctx)
	u64 interrupts, freq;
	u64 interrupts, freq;


	spin_lock(&ctx->lock);
	spin_lock(&ctx->lock);
	list_for_each_entry(event, &ctx->group_list, group_entry) {
	list_for_each_entry_rcu(event, &ctx->event_list, event_entry) {
		if (event->state != PERF_EVENT_STATE_ACTIVE)
		if (event->state != PERF_EVENT_STATE_ACTIVE)
			continue;
			continue;


+26 −2
Original line number Original line Diff line number Diff line
@@ -765,19 +765,40 @@ static void draw_wakeups(void)
					if (c->Y && c->start_time <= we->time && c->end_time >= we->time) {
					if (c->Y && c->start_time <= we->time && c->end_time >= we->time) {
						if (p->pid == we->waker) {
						if (p->pid == we->waker) {
							from = c->Y;
							from = c->Y;
							task_from = c->comm;
							task_from = strdup(c->comm);
						}
						}
						if (p->pid == we->wakee) {
						if (p->pid == we->wakee) {
							to = c->Y;
							to = c->Y;
							task_to = c->comm;
							task_to = strdup(c->comm);
						}
						}
					}
					}
					c = c->next;
					c = c->next;
				}
				}
				c = p->all;
				while (c) {
					if (p->pid == we->waker && !from) {
						from = c->Y;
						task_from = strdup(c->comm);
					}
					if (p->pid == we->wakee && !to) {
						to = c->Y;
						task_to = strdup(c->comm);
					}
					c = c->next;
				}
			}
			}
			p = p->next;
			p = p->next;
		}
		}


		if (!task_from) {
			task_from = malloc(40);
			sprintf(task_from, "[%i]", we->waker);
		}
		if (!task_to) {
			task_to = malloc(40);
			sprintf(task_to, "[%i]", we->wakee);
		}

		if (we->waker == -1)
		if (we->waker == -1)
			svg_interrupt(we->time, to);
			svg_interrupt(we->time, to);
		else if (from && to && abs(from - to) == 1)
		else if (from && to && abs(from - to) == 1)
@@ -785,6 +806,9 @@ static void draw_wakeups(void)
		else
		else
			svg_partial_wakeline(we->time, from, task_from, to, task_to);
			svg_partial_wakeline(we->time, from, task_from, to, task_to);
		we = we->next;
		we = we->next;

		free(task_from);
		free(task_to);
	}
	}
}
}


+2 −0
Original line number Original line Diff line number Diff line
@@ -663,6 +663,8 @@ static void handle_keypress(int c)
	switch (c) {
	switch (c) {
		case 'd':
		case 'd':
			prompt_integer(&delay_secs, "Enter display delay");
			prompt_integer(&delay_secs, "Enter display delay");
			if (delay_secs < 1)
				delay_secs = 1;
			break;
			break;
		case 'e':
		case 'e':
			prompt_integer(&print_entries, "Enter display entries (lines)");
			prompt_integer(&print_entries, "Enter display entries (lines)");
+1 −1
Original line number Original line Diff line number Diff line
#!/bin/sh
#!/bin/sh


GVF=PERF-VERSION-FILE
GVF=PERF-VERSION-FILE
DEF_VER=v0.0.1.PERF
DEF_VER=v0.0.2.PERF


LF='
LF='
'
'
+1 −1
Original line number Original line Diff line number Diff line
@@ -103,7 +103,7 @@ void open_svg(const char *filename, int cpus, int rows, u64 start, u64 end)
	fprintf(svgfile, "      rect.process2 { fill:rgb(180,180,180); fill-opacity:0.9; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.process2 { fill:rgb(180,180,180); fill-opacity:0.9; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.sample   { fill:rgb(  0,  0,255); fill-opacity:0.8; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.sample   { fill:rgb(  0,  0,255); fill-opacity:0.8; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.blocked  { fill:rgb(255,  0,  0); fill-opacity:0.5; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.blocked  { fill:rgb(255,  0,  0); fill-opacity:0.5; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.waiting  { fill:rgb(214,214,  0); fill-opacity:0.3; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.waiting  { fill:rgb(224,214,  0); fill-opacity:0.8; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.WAITING  { fill:rgb(255,214, 48); fill-opacity:0.6; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.WAITING  { fill:rgb(255,214, 48); fill-opacity:0.6; stroke-width:0;   stroke:rgb(  0,  0,  0); } \n");
	fprintf(svgfile, "      rect.cpu      { fill:rgb(192,192,192); fill-opacity:0.2; stroke-width:0.5; stroke:rgb(128,128,128); } \n");
	fprintf(svgfile, "      rect.cpu      { fill:rgb(192,192,192); fill-opacity:0.2; stroke-width:0.5; stroke:rgb(128,128,128); } \n");
	fprintf(svgfile, "      rect.pstate   { fill:rgb(128,128,128); fill-opacity:0.8; stroke-width:0; } \n");
	fprintf(svgfile, "      rect.pstate   { fill:rgb(128,128,128); fill-opacity:0.8; stroke-width:0; } \n");