xref: /freebsd/tests/sys/vm/stack/stack_dt_need_exec_test.c (revision 8920c5f2a1175c22631780bd236026d15e2d3d72)
1*8920c5f2SDmitry Chagin /*-
2*8920c5f2SDmitry Chagin  * Copyright (c) 2023 Dmitry Chagin <dchagin@FreeBSD.org>
3*8920c5f2SDmitry Chagin  *
4*8920c5f2SDmitry Chagin  * SPDX-License-Identifier: BSD-2-Clause
5*8920c5f2SDmitry Chagin  */
6*8920c5f2SDmitry Chagin 
7*8920c5f2SDmitry Chagin #include <sys/systm.h>
8*8920c5f2SDmitry Chagin #include <vm/vm_param.h>
9*8920c5f2SDmitry Chagin 
10*8920c5f2SDmitry Chagin #include <atf-c.h>
11*8920c5f2SDmitry Chagin 
12*8920c5f2SDmitry Chagin extern int checkstack(void);
13*8920c5f2SDmitry Chagin 
14*8920c5f2SDmitry Chagin static int jumpstack0(void) __noinline;
15*8920c5f2SDmitry Chagin static int jumpstack1(void) __noinline;
16*8920c5f2SDmitry Chagin 
17*8920c5f2SDmitry Chagin 
18*8920c5f2SDmitry Chagin static int
jumpstack0(void)19*8920c5f2SDmitry Chagin jumpstack0(void)
20*8920c5f2SDmitry Chagin {
21*8920c5f2SDmitry Chagin 	char stack[SGROWSIZ];
22*8920c5f2SDmitry Chagin 
23*8920c5f2SDmitry Chagin 	explicit_bzero(stack, sizeof(stack));
24*8920c5f2SDmitry Chagin 	return (checkstack());
25*8920c5f2SDmitry Chagin }
26*8920c5f2SDmitry Chagin 
27*8920c5f2SDmitry Chagin static int
jumpstack1(void)28*8920c5f2SDmitry Chagin jumpstack1(void)
29*8920c5f2SDmitry Chagin {
30*8920c5f2SDmitry Chagin 	char stack[SGROWSIZ * 2];
31*8920c5f2SDmitry Chagin 
32*8920c5f2SDmitry Chagin 	explicit_bzero(stack, sizeof(stack));
33*8920c5f2SDmitry Chagin 	return (checkstack());
34*8920c5f2SDmitry Chagin }
35*8920c5f2SDmitry Chagin 
36*8920c5f2SDmitry Chagin ATF_TC_WITHOUT_HEAD(dt_need_test);
ATF_TC_BODY(dt_need_test,tc)37*8920c5f2SDmitry Chagin ATF_TC_BODY(dt_need_test, tc)
38*8920c5f2SDmitry Chagin {
39*8920c5f2SDmitry Chagin 
40*8920c5f2SDmitry Chagin 	ATF_REQUIRE(jumpstack0() == 0);
41*8920c5f2SDmitry Chagin 	ATF_REQUIRE(jumpstack1() == 0);
42*8920c5f2SDmitry Chagin }
43*8920c5f2SDmitry Chagin 
ATF_TP_ADD_TCS(tp)44*8920c5f2SDmitry Chagin ATF_TP_ADD_TCS(tp)
45*8920c5f2SDmitry Chagin {
46*8920c5f2SDmitry Chagin 
47*8920c5f2SDmitry Chagin 	ATF_TP_ADD_TC(tp, dt_need_test);
48*8920c5f2SDmitry Chagin 
49*8920c5f2SDmitry Chagin 	return (atf_no_error());
50*8920c5f2SDmitry Chagin }
51