[PATCH bpf-next] samples/bpf: offwaketime: pretty print

Rong Tao posted 1 patch 3 years, 6 months ago
samples/bpf/offwaketime_user.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
[PATCH bpf-next] samples/bpf: offwaketime: pretty print
Posted by Rong Tao 3 years, 6 months ago
From: Rong Tao <rongtao@cestc.cn>

A sample of call stack:
swapper/10 [
	secondary_startup_64_no_verify
	cpu_startup_entry
	do_idle
	schedule_idle
	__schedule
	__traceiter_sched_switch
	__traceiter_sched_switch
	-
	try_to_wake_up
	call_timer_fn
	__run_timers.part.0
	run_timer_softirq
	__softirqentry_text_start
	__irq_exit_rcu
	sysvec_apic_timer_interrupt
	asm_sysvec_apic_timer_interrupt
	cpuidle_enter_state
	cpuidle_enter
	cpuidle_idle_call
	do_idle
	cpu_startup_entry
	secondary_startup_64_no_verify
] swapper/10 1

Signed-off-by: Rong Tao <rongtao@cestc.cn>
---
 samples/bpf/offwaketime_user.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/samples/bpf/offwaketime_user.c b/samples/bpf/offwaketime_user.c
index b6eedcb98fb9..d89278d62e4e 100644
--- a/samples/bpf/offwaketime_user.c
+++ b/samples/bpf/offwaketime_user.c
@@ -30,9 +30,9 @@ static void print_ksym(__u64 addr)
 	}
 
 	if (PRINT_RAW_ADDR)
-		printf("%s/%llx;", sym->name, addr);
+		printf("\t%s/%llx\n", sym->name, addr);
 	else
-		printf("%s;", sym->name);
+		printf("\t%s\n", sym->name);
 }
 
 #define TASK_COMM_LEN 16
@@ -50,21 +50,21 @@ static void print_stack(struct key_t *key, __u64 count)
 	static bool warned;
 	int i;
 
-	printf("%s;", key->target);
+	printf("%s [\n", key->target);
 	if (bpf_map_lookup_elem(map_fd[1], &key->tret, ip) != 0) {
-		printf("---;");
+		printf("\t---\n");
 	} else {
 		for (i = PERF_MAX_STACK_DEPTH - 1; i >= 0; i--)
 			print_ksym(ip[i]);
 	}
-	printf("-;");
+	printf("\t-\n");
 	if (bpf_map_lookup_elem(map_fd[1], &key->wret, ip) != 0) {
-		printf("---;");
+		printf("\t---\n");
 	} else {
 		for (i = 0; i < PERF_MAX_STACK_DEPTH; i++)
 			print_ksym(ip[i]);
 	}
-	printf(";%s %lld\n", key->waker, count);
+	printf("] %s %lld\n", key->waker, count);
 
 	if ((key->tret == -EEXIST || key->wret == -EEXIST) && !warned) {
 		printf("stackmap collisions seen. Consider increasing size\n");
-- 
2.31.1
Re: [PATCH bpf-next] samples/bpf: offwaketime: pretty print
Posted by Martin KaFai Lau 3 years, 6 months ago
On 9/25/22 7:22 PM, Rong Tao wrote:
> From: Rong Tao <rongtao@cestc.cn>
> 
> A sample of call stack:
> swapper/10 [
> 	secondary_startup_64_no_verify
> 	cpu_startup_entry
> 	do_idle
> 	schedule_idle
> 	__schedule
> 	__traceiter_sched_switch
> 	__traceiter_sched_switch
> 	-
> 	try_to_wake_up
> 	call_timer_fn
> 	__run_timers.part.0
> 	run_timer_softirq
> 	__softirqentry_text_start
> 	__irq_exit_rcu
> 	sysvec_apic_timer_interrupt
> 	asm_sysvec_apic_timer_interrupt
> 	cpuidle_enter_state
> 	cpuidle_enter
> 	cpuidle_idle_call
> 	do_idle
> 	cpu_startup_entry
> 	secondary_startup_64_no_verify
> ] swapper/10 1
> 
> Signed-off-by: Rong Tao <rongtao@cestc.cn>
> ---
>   samples/bpf/offwaketime_user.c | 14 +++++++-------
>   1 file changed, 7 insertions(+), 7 deletions(-)
> 
> diff --git a/samples/bpf/offwaketime_user.c b/samples/bpf/offwaketime_user.c
> index b6eedcb98fb9..d89278d62e4e 100644
> --- a/samples/bpf/offwaketime_user.c
> +++ b/samples/bpf/offwaketime_user.c
> @@ -30,9 +30,9 @@ static void print_ksym(__u64 addr)
>   	}
>   
>   	if (PRINT_RAW_ADDR)
> -		printf("%s/%llx;", sym->name, addr);
> +		printf("\t%s/%llx\n", sym->name, addr);

The origin commit intention is to have an external script for post processing. 
Beside, there are bcc, bpftrace, and libbpf-tools which are better places to 
have different output options.  The current code is good enough for sample 
purpose and no need for unnecessary code churn.
Re: [PATCH bpf-next] samples/bpf: offwaketime: pretty print
Posted by Rong Tao 3 years, 6 months ago
From: Rong Tao <rongtao@cestc.cn>

Thank you very much for your reply, next time I will know all before
submitting.

--