brintos

brintos / linux-shallow public Read only

0
0
Text · 1.3 KiB · e56e885 Raw
59 lines · c
1// SPDX-License-Identifier: GPL-2.02/* Copyright (c) 2020, Oracle and/or its affiliates. */3 4#include <test_progs.h>5 6#include "trace_printk.lskel.h"7 8#define SEARCHMSG	"testing,testing"9 10static void trace_pipe_cb(const char *str, void *data)11{12	if (strstr(str, SEARCHMSG) != NULL)13		(*(int *)data)++;14}15 16void serial_test_trace_printk(void)17{18	struct trace_printk_lskel__bss *bss;19	struct trace_printk_lskel *skel;20	int err = 0, found = 0;21 22	skel = trace_printk_lskel__open();23	if (!ASSERT_OK_PTR(skel, "trace_printk__open"))24		return;25 26	ASSERT_EQ(skel->rodata->fmt[0], 'T', "skel->rodata->fmt[0]");27	skel->rodata->fmt[0] = 't';28 29	err = trace_printk_lskel__load(skel);30	if (!ASSERT_OK(err, "trace_printk__load"))31		goto cleanup;32 33	bss = skel->bss;34 35	err = trace_printk_lskel__attach(skel);36	if (!ASSERT_OK(err, "trace_printk__attach"))37		goto cleanup;38 39	/* wait for tracepoint to trigger */40	usleep(1);41	trace_printk_lskel__detach(skel);42 43	if (!ASSERT_GT(bss->trace_printk_ran, 0, "bss->trace_printk_ran"))44		goto cleanup;45 46	if (!ASSERT_GT(bss->trace_printk_ret, 0, "bss->trace_printk_ret"))47		goto cleanup;48 49	/* verify our search string is in the trace buffer */50	ASSERT_OK(read_trace_pipe_iter(trace_pipe_cb, &found, 1000),51		 "read_trace_pipe_iter");52 53	if (!ASSERT_EQ(found, bss->trace_printk_ran, "found"))54		goto cleanup;55 56cleanup:57	trace_printk_lskel__destroy(skel);58}59