brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · cb3d749 Raw
64 lines · c
1// SPDX-License-Identifier: GPL-2.02#include "util/map_symbol.h"3#include "util/mem-events.h"4#include "util/mem-info.h"5#include "util/symbol.h"6#include "linux/perf_event.h"7#include "util/debug.h"8#include "tests.h"9#include <string.h>10 11static int check(union perf_mem_data_src data_src,12		  const char *string)13{14	char out[100];15	char failure[100];16	struct mem_info *mi = mem_info__new();17	int n;18 19	TEST_ASSERT_VAL("Memory allocation failed", mi);20	*mem_info__data_src(mi) = data_src;21	n = perf_mem__snp_scnprintf(out, sizeof out, mi);22	n += perf_mem__lvl_scnprintf(out + n, sizeof out - n, mi);23	mem_info__put(mi);24	scnprintf(failure, sizeof failure, "unexpected %s", out);25	TEST_ASSERT_VAL(failure, !strcmp(string, out));26	return 0;27}28 29static int test__mem(struct test_suite *text __maybe_unused, int subtest __maybe_unused)30{31	int ret = 0;32	union perf_mem_data_src src;33 34	memset(&src, 0, sizeof(src));35 36	src.mem_lvl = PERF_MEM_LVL_HIT;37	src.mem_lvl_num = 4;38 39	ret |= check(src, "N/AL4 hit");40 41	src.mem_remote = 1;42 43	ret |= check(src, "N/ARemote L4 hit");44 45	src.mem_lvl = PERF_MEM_LVL_MISS;46	src.mem_lvl_num = PERF_MEM_LVLNUM_PMEM;47	src.mem_remote = 0;48 49	ret |= check(src, "N/APMEM miss");50 51	src.mem_remote = 1;52 53	ret |= check(src, "N/ARemote PMEM miss");54 55	src.mem_snoopx = PERF_MEM_SNOOPX_FWD;56	src.mem_lvl_num = PERF_MEM_LVLNUM_RAM;57 58	ret |= check(src , "FwdRemote RAM miss");59 60	return ret;61}62 63DEFINE_SUITE("Test data source output", mem);64