159e8b60bSAlan Maguire // SPDX-License-Identifier: GPL-2.0
259e8b60bSAlan Maguire /* Copyright (c) 2020, Oracle and/or its affiliates. */
359e8b60bSAlan Maguire
459e8b60bSAlan Maguire #include <test_progs.h>
559e8b60bSAlan Maguire
61a532eb2SAlexei Starovoitov #include "trace_printk.lskel.h"
759e8b60bSAlan Maguire
859e8b60bSAlan Maguire #define SEARCHMSG "testing,testing"
959e8b60bSAlan Maguire
trace_pipe_cb(const char * str,void * data)10*4d4992ffSJiri Olsa static void trace_pipe_cb(const char *str, void *data)
11*4d4992ffSJiri Olsa {
12*4d4992ffSJiri Olsa if (strstr(str, SEARCHMSG) != NULL)
13*4d4992ffSJiri Olsa (*(int *)data)++;
14*4d4992ffSJiri Olsa }
15*4d4992ffSJiri Olsa
serial_test_trace_printk(void)16d3f7b166SYucong Sun void serial_test_trace_printk(void)
1759e8b60bSAlan Maguire {
18087cba79SKumar Kartikeya Dwivedi struct trace_printk_lskel__bss *bss;
19087cba79SKumar Kartikeya Dwivedi struct trace_printk_lskel *skel;
20*4d4992ffSJiri Olsa int err = 0, found = 0;
2159e8b60bSAlan Maguire
22087cba79SKumar Kartikeya Dwivedi skel = trace_printk_lskel__open();
23d313d45aSDave Marchevsky if (!ASSERT_OK_PTR(skel, "trace_printk__open"))
2459e8b60bSAlan Maguire return;
2559e8b60bSAlan Maguire
26d313d45aSDave Marchevsky ASSERT_EQ(skel->rodata->fmt[0], 'T', "skel->rodata->fmt[0]");
27eb0f1e0cSAlexei Starovoitov skel->rodata->fmt[0] = 't';
28eb0f1e0cSAlexei Starovoitov
29087cba79SKumar Kartikeya Dwivedi err = trace_printk_lskel__load(skel);
30d313d45aSDave Marchevsky if (!ASSERT_OK(err, "trace_printk__load"))
3159e8b60bSAlan Maguire goto cleanup;
3259e8b60bSAlan Maguire
3359e8b60bSAlan Maguire bss = skel->bss;
3459e8b60bSAlan Maguire
35087cba79SKumar Kartikeya Dwivedi err = trace_printk_lskel__attach(skel);
36d313d45aSDave Marchevsky if (!ASSERT_OK(err, "trace_printk__attach"))
3759e8b60bSAlan Maguire goto cleanup;
3859e8b60bSAlan Maguire
3959e8b60bSAlan Maguire /* wait for tracepoint to trigger */
4059e8b60bSAlan Maguire usleep(1);
41087cba79SKumar Kartikeya Dwivedi trace_printk_lskel__detach(skel);
4259e8b60bSAlan Maguire
43d313d45aSDave Marchevsky if (!ASSERT_GT(bss->trace_printk_ran, 0, "bss->trace_printk_ran"))
4459e8b60bSAlan Maguire goto cleanup;
4559e8b60bSAlan Maguire
46d313d45aSDave Marchevsky if (!ASSERT_GT(bss->trace_printk_ret, 0, "bss->trace_printk_ret"))
4759e8b60bSAlan Maguire goto cleanup;
4859e8b60bSAlan Maguire
4959e8b60bSAlan Maguire /* verify our search string is in the trace buffer */
50*4d4992ffSJiri Olsa ASSERT_OK(read_trace_pipe_iter(trace_pipe_cb, &found, 1000),
51*4d4992ffSJiri Olsa "read_trace_pipe_iter");
5259e8b60bSAlan Maguire
53d313d45aSDave Marchevsky if (!ASSERT_EQ(found, bss->trace_printk_ran, "found"))
5459e8b60bSAlan Maguire goto cleanup;
5559e8b60bSAlan Maguire
5659e8b60bSAlan Maguire cleanup:
57087cba79SKumar Kartikeya Dwivedi trace_printk_lskel__destroy(skel);
5859e8b60bSAlan Maguire }
59