brintos

brintos / linux-shallow public Read only

0
0
Text · 6.5 KiB · dfe1bd5 Raw
164 lines · c
1// SPDX-License-Identifier: GPL-2.02#include <stdbool.h>3#include <stdlib.h>4#include <string.h>5#include "tests.h"6#include "dso.h"7#include "debug.h"8#include "event.h"9 10static int test(const char *path, bool alloc_name, bool kmod,11		int comp, const char *name)12{13	struct kmod_path m;14 15	memset(&m, 0x0, sizeof(m));16 17	TEST_ASSERT_VAL("kmod_path__parse",18			!__kmod_path__parse(&m, path, alloc_name));19 20	pr_debug("%s - alloc name %d, kmod %d, comp %d, name '%s'\n",21		 path, alloc_name, m.kmod, m.comp, m.name);22 23	TEST_ASSERT_VAL("wrong kmod", m.kmod == kmod);24	TEST_ASSERT_VAL("wrong comp", m.comp == comp);25 26	if (name)27		TEST_ASSERT_VAL("wrong name", m.name && !strcmp(name, m.name));28	else29		TEST_ASSERT_VAL("wrong name", !m.name);30 31	free(m.name);32	return 0;33}34 35static int test_is_kernel_module(const char *path, int cpumode, bool expect)36{37	TEST_ASSERT_VAL("is_kernel_module",38			(!!is_kernel_module(path, cpumode)) == (!!expect));39	pr_debug("%s (cpumode: %d) - is_kernel_module: %s\n",40			path, cpumode, expect ? "true" : "false");41	return 0;42}43 44#define T(path, an, k, c, n) \45	TEST_ASSERT_VAL("failed", !test(path, an, k, c, n))46 47#define M(path, c, e) \48	TEST_ASSERT_VAL("failed", !test_is_kernel_module(path, c, e))49 50static int test__kmod_path__parse(struct test_suite *t __maybe_unused, int subtest __maybe_unused)51{52	/* path                alloc_name  kmod  comp   name   */53	T("/xxxx/xxxx/x-x.ko", true      , true, 0    , "[x_x]");54	T("/xxxx/xxxx/x-x.ko", false     , true, 0    , NULL   );55	T("/xxxx/xxxx/x-x.ko", true      , true, 0    , "[x_x]");56	T("/xxxx/xxxx/x-x.ko", false     , true, 0    , NULL   );57	M("/xxxx/xxxx/x-x.ko", PERF_RECORD_MISC_CPUMODE_UNKNOWN, true);58	M("/xxxx/xxxx/x-x.ko", PERF_RECORD_MISC_KERNEL, true);59	M("/xxxx/xxxx/x-x.ko", PERF_RECORD_MISC_USER, false);60 61#ifdef HAVE_ZLIB_SUPPORT62	/* path                alloc_name   kmod  comp  name  */63	T("/xxxx/xxxx/x.ko.gz", true     , true, 1   , "[x]");64	T("/xxxx/xxxx/x.ko.gz", false    , true, 1   , NULL );65	T("/xxxx/xxxx/x.ko.gz", true     , true, 1   , "[x]");66	T("/xxxx/xxxx/x.ko.gz", false    , true, 1   , NULL );67	M("/xxxx/xxxx/x.ko.gz", PERF_RECORD_MISC_CPUMODE_UNKNOWN, true);68	M("/xxxx/xxxx/x.ko.gz", PERF_RECORD_MISC_KERNEL, true);69	M("/xxxx/xxxx/x.ko.gz", PERF_RECORD_MISC_USER, false);70 71	/* path              alloc_name  kmod   comp  name  */72	T("/xxxx/xxxx/x.gz", true      , false, 1   , "x.gz");73	T("/xxxx/xxxx/x.gz", false     , false, 1   , NULL  );74	T("/xxxx/xxxx/x.gz", true      , false, 1   , "x.gz");75	T("/xxxx/xxxx/x.gz", false     , false, 1   , NULL  );76	M("/xxxx/xxxx/x.gz", PERF_RECORD_MISC_CPUMODE_UNKNOWN, false);77	M("/xxxx/xxxx/x.gz", PERF_RECORD_MISC_KERNEL, false);78	M("/xxxx/xxxx/x.gz", PERF_RECORD_MISC_USER, false);79 80	/* path   alloc_name  kmod   comp  name   */81	T("x.gz", true      , false, 1   , "x.gz");82	T("x.gz", false     , false, 1   , NULL  );83	T("x.gz", true      , false, 1   , "x.gz");84	T("x.gz", false     , false, 1   , NULL  );85	M("x.gz", PERF_RECORD_MISC_CPUMODE_UNKNOWN, false);86	M("x.gz", PERF_RECORD_MISC_KERNEL, false);87	M("x.gz", PERF_RECORD_MISC_USER, false);88 89	/* path      alloc_name  kmod  comp  name  */90	T("x.ko.gz", true      , true, 1   , "[x]");91	T("x.ko.gz", false     , true, 1   , NULL );92	T("x.ko.gz", true      , true, 1   , "[x]");93	T("x.ko.gz", false     , true, 1   , NULL );94	M("x.ko.gz", PERF_RECORD_MISC_CPUMODE_UNKNOWN, true);95	M("x.ko.gz", PERF_RECORD_MISC_KERNEL, true);96	M("x.ko.gz", PERF_RECORD_MISC_USER, false);97#endif98 99	/* path            alloc_name  kmod  comp   name           */100	T("[test_module]", true      , true, false, "[test_module]");101	T("[test_module]", false     , true, false, NULL           );102	T("[test_module]", true      , true, false, "[test_module]");103	T("[test_module]", false     , true, false, NULL           );104	M("[test_module]", PERF_RECORD_MISC_CPUMODE_UNKNOWN, true);105	M("[test_module]", PERF_RECORD_MISC_KERNEL, true);106	M("[test_module]", PERF_RECORD_MISC_USER, false);107 108	/* path            alloc_name  kmod  comp   name           */109	T("[test.module]", true      , true, false, "[test.module]");110	T("[test.module]", false     , true, false, NULL           );111	T("[test.module]", true      , true, false, "[test.module]");112	T("[test.module]", false     , true, false, NULL           );113	M("[test.module]", PERF_RECORD_MISC_CPUMODE_UNKNOWN, true);114	M("[test.module]", PERF_RECORD_MISC_KERNEL, true);115	M("[test.module]", PERF_RECORD_MISC_USER, false);116 117	/* path     alloc_name  kmod   comp   name    */118	T("[vdso]", true      , false, false, "[vdso]");119	T("[vdso]", false     , false, false, NULL    );120	T("[vdso]", true      , false, false, "[vdso]");121	T("[vdso]", false     , false, false, NULL    );122	M("[vdso]", PERF_RECORD_MISC_CPUMODE_UNKNOWN, false);123	M("[vdso]", PERF_RECORD_MISC_KERNEL, false);124	M("[vdso]", PERF_RECORD_MISC_USER, false);125 126	T("[vdso32]", true      , false, false, "[vdso32]");127	T("[vdso32]", false     , false, false, NULL      );128	T("[vdso32]", true      , false, false, "[vdso32]");129	T("[vdso32]", false     , false, false, NULL      );130	M("[vdso32]", PERF_RECORD_MISC_CPUMODE_UNKNOWN, false);131	M("[vdso32]", PERF_RECORD_MISC_KERNEL, false);132	M("[vdso32]", PERF_RECORD_MISC_USER, false);133 134	T("[vdsox32]", true      , false, false, "[vdsox32]");135	T("[vdsox32]", false     , false, false, NULL       );136	T("[vdsox32]", true      , false, false, "[vdsox32]");137	T("[vdsox32]", false     , false, false, NULL       );138	M("[vdsox32]", PERF_RECORD_MISC_CPUMODE_UNKNOWN, false);139	M("[vdsox32]", PERF_RECORD_MISC_KERNEL, false);140	M("[vdsox32]", PERF_RECORD_MISC_USER, false);141 142	/* path         alloc_name  kmod   comp   name        */143	T("[vsyscall]", true      , false, false, "[vsyscall]");144	T("[vsyscall]", false     , false, false, NULL        );145	T("[vsyscall]", true      , false, false, "[vsyscall]");146	T("[vsyscall]", false     , false, false, NULL        );147	M("[vsyscall]", PERF_RECORD_MISC_CPUMODE_UNKNOWN, false);148	M("[vsyscall]", PERF_RECORD_MISC_KERNEL, false);149	M("[vsyscall]", PERF_RECORD_MISC_USER, false);150 151	/* path                alloc_name  kmod   comp   name      */152	T("[kernel.kallsyms]", true      , false, false, "[kernel.kallsyms]");153	T("[kernel.kallsyms]", false     , false, false, NULL               );154	T("[kernel.kallsyms]", true      , false, false, "[kernel.kallsyms]");155	T("[kernel.kallsyms]", false     , false, false, NULL               );156	M("[kernel.kallsyms]", PERF_RECORD_MISC_CPUMODE_UNKNOWN, false);157	M("[kernel.kallsyms]", PERF_RECORD_MISC_KERNEL, false);158	M("[kernel.kallsyms]", PERF_RECORD_MISC_USER, false);159 160	return 0;161}162 163DEFINE_SUITE("kmod_path__parse", kmod_path__parse);164