xref: /openbsd/regress/sys/kern/fork-exit/Makefile (revision 73471bf0)
1# $OpenBSD: Makefile,v 1.4 2021/05/21 20:21:10 bluhm Exp $
2
3# Copyright (c) 2021 Alexander Bluhm <bluhm@openbsd.org>
4#
5# Permission to use, copy, modify, and distribute this software for any
6# purpose with or without fee is hereby granted, provided that the above
7# copyright notice and this permission notice appear in all copies.
8#
9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
17# To hunt kernel bugs during exit, terminate processes simultaneously.
18# Fork 300 children that sleep.  Kill them together as process group.
19# Sleeping can optionally be done with individual memory layout by
20# executing sleep(1).  Optionally each child may create threads.
21# Test killing 30 processes with 30 threads each.
22
23PROG=		fork-exit
24LDADD=		-lpthread
25WARNINGS=	yes
26
27REGRESS_TARGETS +=	run-fork1-exit
28run-fork1-exit: ${PROG}
29	# test forking a single child
30	ulimit -p 500 -n 1000; ./fork-exit
31
32REGRESS_TARGETS +=	run-fork-exit
33run-fork-exit: ${PROG}
34	# fork 300 children and kill them simultaneously as process group
35	ulimit -p 500 -n 1000; ./fork-exit -p 300
36
37REGRESS_TARGETS +=	run-fork-exec-exit
38run-fork-exec-exit: ${PROG}
39	# fork 300 children, exec sleep programs, and kill process group
40	ulimit -p 500 -n 1000; ./fork-exit -e -p 300
41
42REGRESS_TARGETS +=	run-fork1-thread1
43run-fork1-thread1: ${PROG}
44	# fork a single child and create one thread
45	ulimit -p 500 -n 1000; ./fork-exit -t 1
46
47REGRESS_TARGETS +=	run-fork1-thread
48run-fork1-thread: ${PROG}
49	# fork a single child and create 1000 threads
50	ulimit -p 500 -n 1000; ./fork-exit -t 1000
51
52REGRESS_TARGETS +=	run-fork-thread
53run-fork-thread: ${PROG}
54	# fork 30 children each with 30 threads and kill process group
55	ulimit -p 500 -n 1000; ./fork-exit -p 30 -t 30
56
57REGRESS_TARGETS +=	run-fork1-heap
58run-fork1-heap: ${PROG}
59	# allocate 400 MB of heap memory
60	ulimit -p 500 -n 1000; ./fork-exit -h 100000
61
62REGRESS_TARGETS +=	run-fork-heap
63run-fork-heap: ${PROG}
64	# allocate 400 MB of heap memory in processes
65	ulimit -p 500 -n 1000; ./fork-exit -p 100 -h 1000
66
67REGRESS_TARGETS +=	run-fork1-thread1-heap
68run-fork1-thread1-heap: ${PROG}
69	# allocate 400 MB of heap memory in single child and one thread
70	ulimit -p 500 -n 1000; ./fork-exit -t 1 -h 100000
71
72REGRESS_TARGETS +=	run-fork-thread-heap
73run-fork-thread-heap: ${PROG}
74	# allocate 400 MB of heap memory in threads
75	ulimit -p 500 -n 1000; ./fork-exit -p 10 -t 100 -h 100
76
77REGRESS_TARGETS +=	run-fork1-stack
78run-fork1-stack: ${PROG}
79	# allocate 32 MB of stack memory
80	ulimit -p 500 -n 1000; ulimit -s 32768; ./fork-exit -s 8000
81
82REGRESS_TARGETS +=	run-fork-stack
83run-fork-stack: ${PROG}
84	# allocate 400 MB of stack memory in processes
85	ulimit -p 500 -n 1000; ulimit -s 32768; ./fork-exit -p 100 -s 1000
86
87REGRESS_TARGETS +=	run-fork1-thread1-stack
88run-fork1-thread1-stack: ${PROG}
89	# allocate 400 MB of stack memory in single child and one thread
90	ulimit -p 500 -n 1000; ./fork-exit -t 1 -s 100000
91
92REGRESS_TARGETS +=	run-fork-thread-stack
93run-fork-thread-stack: ${PROG}
94	# allocate 400 MB of stack memory in threads
95	ulimit -p 500 -n 1000; ./fork-exit -p 10 -t 100 -s 100
96
97REGRESS_CLEANUP =	cleanup
98cleanup:
99	# check that all processes have been terminated and waited for
100	! pkill -u `id -u` fork-exit
101
102.include <bsd.regress.mk>
103