162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/* Copyright (c) 2021 Facebook */
362306a36Sopenharmony_ci
462306a36Sopenharmony_ci#include "vmlinux.h"
562306a36Sopenharmony_ci#include <bpf/bpf_helpers.h>
662306a36Sopenharmony_ci#include <bpf/bpf_tracing.h>
762306a36Sopenharmony_ci#include "bpf_misc.h"
862306a36Sopenharmony_ci
962306a36Sopenharmony_cichar _license[] SEC("license") = "GPL";
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ciint null_data_vprintk_ret = 0;
1262306a36Sopenharmony_ciint trace_vprintk_ret = 0;
1362306a36Sopenharmony_ciint trace_vprintk_ran = 0;
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciSEC("fentry/" SYS_PREFIX "sys_nanosleep")
1662306a36Sopenharmony_ciint sys_enter(void *ctx)
1762306a36Sopenharmony_ci{
1862306a36Sopenharmony_ci	static const char one[] = "1";
1962306a36Sopenharmony_ci	static const char three[] = "3";
2062306a36Sopenharmony_ci	static const char five[] = "5";
2162306a36Sopenharmony_ci	static const char seven[] = "7";
2262306a36Sopenharmony_ci	static const char nine[] = "9";
2362306a36Sopenharmony_ci	static const char f[] = "%pS\n";
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	/* runner doesn't search for \t, just ensure it compiles */
2662306a36Sopenharmony_ci	bpf_printk("\t");
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci	trace_vprintk_ret = __bpf_vprintk("%s,%d,%s,%d,%s,%d,%s,%d,%s,%d %d\n",
2962306a36Sopenharmony_ci		one, 2, three, 4, five, 6, seven, 8, nine, 10, ++trace_vprintk_ran);
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	/* non-NULL fmt w/ NULL data should result in error */
3262306a36Sopenharmony_ci	null_data_vprintk_ret = bpf_trace_vprintk(f, sizeof(f), NULL, 0);
3362306a36Sopenharmony_ci	return 0;
3462306a36Sopenharmony_ci}
35