Module Name: src Committed By: martin Date: Tue Jan 16 13:01:11 UTC 2018
Modified Files: src/distrib/sets/lists/debug [netbsd-8]: mi src/distrib/sets/lists/tests [netbsd-8]: mi src/share/man/man9 [netbsd-8]: workqueue.9 src/sys/kern [netbsd-8]: subr_workqueue.c src/sys/net [netbsd-8]: if_bridge.c if_spppsubr.c src/sys/sys [netbsd-8]: workqueue.h src/tests/rump/kernspace [netbsd-8]: Makefile kernspace.h src/tests/rump/rumpkern [netbsd-8]: Makefile Added Files: src/tests/rump/kernspace [netbsd-8]: workqueue.c src/tests/rump/rumpkern [netbsd-8]: t_workqueue.c Log Message: Pull up following revision(s) (requested by ozaki-r in ticket #497): tests/rump/rumpkern/Makefile: revision 1.16 tests/rump/kernspace/Makefile: revision 1.6 tests/rump/kernspace/workqueue.c: revision 1.1 tests/rump/kernspace/workqueue.c: revision 1.2 tests/rump/kernspace/workqueue.c: revision 1.3 tests/rump/kernspace/workqueue.c: revision 1.4 tests/rump/kernspace/workqueue.c: revision 1.5 tests/rump/kernspace/workqueue.c: revision 1.6 tests/rump/rumpkern/t_workqueue.c: revision 1.1 sys/sys/workqueue.h: revision 1.10 tests/rump/rumpkern/t_workqueue.c: revision 1.2 tests/rump/kernspace/kernspace.h: revision 1.5 tests/rump/kernspace/kernspace.h: revision 1.6 sys/net/if_bridge.c: revision 1.147 distrib/sets/lists/debug/mi: revision 1.225 sys/kern/subr_workqueue.c: revision 1.34 share/man/man9/workqueue.9: revision 1.12 sys/net/if_spppsubr.c: revision 1.178 distrib/sets/lists/tests/mi: revision 1.763 Add simple test for workqueue(9) Add declaration. build fix sorry, I forgot to commit this file. Tweak use of cv_timedwait - Handle its return value - Specify more appropriate time-out periods (2 ticks is too short) Fix a race condition on taking the mutex The workqueue worker can take the mutex before the tester tries to take it after calling workqueue_enqueue. If it happens, the worker calls cv_broadcast before the tester calls cv_timedwait and the tester will wait until the cv timed out Take the mutex before calling workqueue_enqueue so that the tester surely calls cv_timedwait before the worker calls cv_broadcast. The fix stabilizes the test, t_workqueue/workqueue1. Add workqueue_wait that waits for a specific work to finish The caller must ensure that no new work is enqueued before calling workqueue_wait. Note that Note that if the workqueue is WQ_PERCPU, the caller can enqueue a new work to another queue other than the waiting queue. Discussed on tech-kern@ Ensure the timer isn't running by using workqueue_wait Functionalize some routines to add new tests easily (NFC) Add a test case for workqueue_wait Fix build To generate a diff of this commit: cvs rdiff -u -r1.216.2.7 -r1.216.2.8 src/distrib/sets/lists/debug/mi cvs rdiff -u -r1.752.2.7 -r1.752.2.8 src/distrib/sets/lists/tests/mi cvs rdiff -u -r1.11 -r1.11.8.1 src/share/man/man9/workqueue.9 cvs rdiff -u -r1.33 -r1.33.30.1 src/sys/kern/subr_workqueue.c cvs rdiff -u -r1.134.6.5 -r1.134.6.6 src/sys/net/if_bridge.c cvs rdiff -u -r1.169.6.3 -r1.169.6.4 src/sys/net/if_spppsubr.c cvs rdiff -u -r1.9 -r1.9.100.1 src/sys/sys/workqueue.h cvs rdiff -u -r1.5 -r1.5.38.1 src/tests/rump/kernspace/Makefile cvs rdiff -u -r1.4 -r1.4.38.1 src/tests/rump/kernspace/kernspace.h cvs rdiff -u -r0 -r1.6.2.2 src/tests/rump/kernspace/workqueue.c cvs rdiff -u -r1.15 -r1.15.16.1 src/tests/rump/rumpkern/Makefile cvs rdiff -u -r0 -r1.2.2.2 src/tests/rump/rumpkern/t_workqueue.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.