Add threadpool(9), an abstraction that provides shared pools of kernel
threads running at specific priorities, with support for unbound pools
and per-cpu pools.
Written by riastradh@, and based on the May 2014 draft, with a few changes
by me:
- Working on the assumption that a relative few priorities will actually
be used, reduce the memory footprint by using linked lists, rather than
2 large (and mostly empty) tables. The performance impact is essentially
nil, since these lists are consulted only when pools are created (and
destroyed, for DIAGNOSTIC checks), and the lists will have at most 225
entries.
- Make threadpool job object, which the caller must allocate storage for,
really opaque.
- Use typedefs for the threadpool types, to reduce the verbosity of the
API somewhat.
- Fix a bunch of pool / worker thread / job object lifecycle bugs.
Also include an ATF unit test, written by me, that exercises the basics
of the API by loading a kernel module that exposes several sysctls that
allow the ATF test script to create and destroy threadpools, schedule a
basic job, and verify that it ran.
And thus NetBSD 8.99.29 has arrived.
2018-12-24 19:58:53 +03:00
|
|
|
# $NetBSD: Makefile,v 1.55 2018/12/24 16:58:54 thorpej Exp $
|
2009-02-21 00:39:57 +03:00
|
|
|
|
|
|
|
NOMAN= # defined
|
|
|
|
|
|
|
|
.include <bsd.own.mk>
|
|
|
|
|
|
|
|
TESTSDIR= ${TESTSBASE}/kernel
|
|
|
|
|
2016-12-02 08:54:14 +03:00
|
|
|
TESTS_SUBDIRS+= kqueue
|
2009-02-21 00:39:57 +03:00
|
|
|
TESTS_C= t_lock
|
2012-11-07 20:36:49 +04:00
|
|
|
TESTS_C+= t_lockf
|
2011-09-24 19:53:01 +04:00
|
|
|
TESTS_C+= t_pty
|
2012-11-03 09:19:33 +04:00
|
|
|
TESTS_C+= t_mqueue
|
2012-11-05 08:09:14 +04:00
|
|
|
TESTS_C+= t_sysv
|
2011-11-24 05:46:40 +04:00
|
|
|
TESTS_C+= t_subr_prf
|
2013-02-28 19:31:22 +04:00
|
|
|
TESTS_C+= t_kauth_pr_47598
|
2014-08-09 11:04:03 +04:00
|
|
|
TESTS_C+= t_sysctl
|
2017-12-08 04:19:29 +03:00
|
|
|
TESTS_C+= t_timeleft
|
2018-03-14 05:13:47 +03:00
|
|
|
TESTS_C+= t_zombie
|
2009-02-21 00:39:57 +03:00
|
|
|
|
|
|
|
TESTS_SH= t_umount
|
2013-04-17 02:05:44 +04:00
|
|
|
TESTS_SH+= t_umountstress
|
2011-03-05 21:14:33 +03:00
|
|
|
TESTS_SH+= t_ps_strings
|
2017-12-07 22:46:40 +03:00
|
|
|
TESTS_SH+= t_trapsignal
|
2017-12-06 16:54:26 +03:00
|
|
|
TESTS_SH+= t_interp
|
2017-12-10 18:37:54 +03:00
|
|
|
TESTS_SH+= t_procpath
|
2011-03-05 21:14:33 +03:00
|
|
|
|
Add threadpool(9), an abstraction that provides shared pools of kernel
threads running at specific priorities, with support for unbound pools
and per-cpu pools.
Written by riastradh@, and based on the May 2014 draft, with a few changes
by me:
- Working on the assumption that a relative few priorities will actually
be used, reduce the memory footprint by using linked lists, rather than
2 large (and mostly empty) tables. The performance impact is essentially
nil, since these lists are consulted only when pools are created (and
destroyed, for DIAGNOSTIC checks), and the lists will have at most 225
entries.
- Make threadpool job object, which the caller must allocate storage for,
really opaque.
- Use typedefs for the threadpool types, to reduce the verbosity of the
API somewhat.
- Fix a bunch of pool / worker thread / job object lifecycle bugs.
Also include an ATF unit test, written by me, that exercises the basics
of the API by loading a kernel module that exposes several sysctls that
allow the ATF test script to create and destroy threadpools, schedule a
basic job, and verify that it ran.
And thus NetBSD 8.99.29 has arrived.
2018-12-24 19:58:53 +03:00
|
|
|
SUBDIR+= threadpool_tester
|
|
|
|
TESTS_SH+= t_threadpool
|
|
|
|
|
2011-03-05 21:14:33 +03:00
|
|
|
BINDIR= ${TESTSDIR}
|
|
|
|
PROGS= h_ps_strings1
|
|
|
|
PROGS+= h_ps_strings2
|
2017-12-07 22:46:40 +03:00
|
|
|
PROGS+= h_segv
|
2017-12-10 18:37:54 +03:00
|
|
|
PROGS+= h_getprocpath
|
2017-12-14 17:38:17 +03:00
|
|
|
|
|
|
|
SCRIPTSDIR= ${TESTSDIR}
|
|
|
|
SCRIPTS= h_interpreter.sh
|
2009-02-21 00:39:57 +03:00
|
|
|
|
2012-11-07 09:13:45 +04:00
|
|
|
LDADD.t_mqueue+= -lrt
|
|
|
|
|
2012-08-08 17:57:05 +04:00
|
|
|
|
2015-06-22 03:05:23 +03:00
|
|
|
.if (${MKRUMP} != "no") && !defined(BSD_MK_COMPAT_FILE)
|
2012-08-08 17:57:05 +04:00
|
|
|
TESTS_SUBDIRS+= tty
|
|
|
|
|
|
|
|
TESTS_C+= t_extattrctl
|
|
|
|
TESTS_C+= t_filedesc
|
|
|
|
TESTS_C+= t_rnd
|
2014-06-10 08:28:39 +04:00
|
|
|
LDADD.t_extattrctl+= -lrumpvfs -lrump -lrumpuser
|
|
|
|
LDADD.t_extattrctl+= -lrump -lpthread
|
2012-08-08 17:57:05 +04:00
|
|
|
LDADD.t_filedesc+= ${LDADD.t_rnd}
|
2014-06-10 08:28:39 +04:00
|
|
|
LDADD.t_rnd+= -lrumpvfs -lrumpdev_rnd -lrumpdev -lrump -lrumpuser
|
|
|
|
LDADD.t_rnd+= -lrump -lpthread
|
2012-08-08 17:57:05 +04:00
|
|
|
|
|
|
|
.endif
|
|
|
|
|
2017-12-12 21:19:45 +03:00
|
|
|
LDADD.t_timeleft+= -lpthread
|
|
|
|
|
2016-12-14 09:19:59 +03:00
|
|
|
CPPFLAGS+= -D_KERNTYPES
|
2009-09-09 00:37:45 +04:00
|
|
|
|
2009-02-21 00:39:57 +03:00
|
|
|
.PATH: ${NETBSDSRCDIR}/sys/kern
|
|
|
|
TESTS_C+= t_extent
|
|
|
|
SRCS.t_extent= t_extent.c subr_extent.c
|
2016-02-15 17:59:38 +03:00
|
|
|
CPPFLAGS.t_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
|
|
|
|
CPPFLAGS.subr_extent.c= -D_EXTENT_TESTING -D__POOL_EXPOSE -D_KERNTYPES
|
2009-02-21 00:39:57 +03:00
|
|
|
|
2011-11-24 05:46:40 +04:00
|
|
|
t_subr_prf.c: gen_t_subr_prf ${NETBSDSRCDIR}/sys/kern/subr_prf.c
|
|
|
|
${HOST_SH} ${.ALLSRC} ${.TARGET}
|
2014-08-10 20:44:32 +04:00
|
|
|
CPPFLAGS.t_subr_prf.c= -Wno-pointer-sign # XXX platform vs kernel SHA2
|
2011-11-24 05:46:40 +04:00
|
|
|
|
|
|
|
CLEANFILES+= t_subr_prf.c
|
|
|
|
|
2018-11-11 04:26:08 +03:00
|
|
|
LDADD.h_segv+= -lm
|
|
|
|
|
2009-02-21 00:39:57 +03:00
|
|
|
.include <bsd.test.mk>
|