tools/testing/selftests/arm64/mte/check_prctl.c

Source file repositories/reference/linux-study-clean/tools/testing/selftests/arm64/mte/check_prctl.c

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/arm64/mte/check_prctl.c
Extension
.c
Size
3162 bytes
Lines
133
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: implementation source
Status
source implementation candidate

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

struct mte_mode {
	int mask;
	int hwcap2;
	int hwcap3;
	const char *name;
} mte_modes[] = {
	{ PR_MTE_TCF_NONE,                                        0,          0,                     "NONE"  },
	{ PR_MTE_TCF_SYNC,                                        HWCAP2_MTE, 0,                     "SYNC"  },
	{ PR_MTE_TCF_ASYNC,                                       HWCAP2_MTE, 0,                     "ASYNC" },
	{ PR_MTE_TCF_SYNC | PR_MTE_TCF_ASYNC,                     HWCAP2_MTE, 0,                     "SYNC+ASYNC"  },
	{ PR_MTE_TCF_SYNC | PR_MTE_STORE_ONLY,                    HWCAP2_MTE, HWCAP3_MTE_STORE_ONLY, "SYNC+STONLY" },
	{ PR_MTE_TCF_ASYNC | PR_MTE_STORE_ONLY,                   HWCAP2_MTE, HWCAP3_MTE_STORE_ONLY, "ASYNC+STONLY" },
	{ PR_MTE_TCF_SYNC | PR_MTE_TCF_ASYNC | PR_MTE_STORE_ONLY, HWCAP2_MTE, HWCAP3_MTE_STORE_ONLY, "SYNC+ASYNC+STONLY" },
};

int main(void)
{
	int i;

	ksft_print_header();
	ksft_set_plan(ARRAY_SIZE(mte_modes));

	check_basic_read();
	for (i = 0; i < ARRAY_SIZE(mte_modes); i++)
		set_mode_test(mte_modes[i].name, mte_modes[i].hwcap2, mte_modes[i].hwcap3,
			      mte_modes[i].mask);

	ksft_print_cnts();

	return 0;
}

Annotation

Implementation Notes