--- - branch: netbsd-9 date: Thu Apr 18 15:51:36 UTC 2024 files: - new: 1.12.6.1 old: '1.12' path: src/share/man/man9/workqueue.9 pathrev: src/share/man/man9/workqueue.9@1.12.6.1 type: modified - new: 1.37.6.1 old: '1.37' path: src/sys/kern/subr_workqueue.c pathrev: src/sys/kern/subr_workqueue.c@1.37.6.1 type: modified - new: 1.8.2.1 old: '1.8' path: src/tests/rump/kernspace/kernspace.h pathrev: src/tests/rump/kernspace/kernspace.h@1.8.2.1 type: modified - new: 1.6.8.1 old: '1.6' path: src/tests/rump/kernspace/workqueue.c pathrev: src/tests/rump/kernspace/workqueue.c@1.6.8.1 type: modified - new: 1.18.2.1 old: '1.18' path: src/tests/rump/rumpkern/Makefile pathrev: src/tests/rump/rumpkern/Makefile@1.18.2.1 type: modified - new: 1.2.8.1 old: '1.2' path: src/tests/rump/rumpkern/t_workqueue.c pathrev: src/tests/rump/rumpkern/t_workqueue.c@1.2.8.1 type: modified id: 20240418T155136Z.9b671e78ef86acec78cf776213a92dbc9042356f log: "Pull up following revision(s) (requested by riastradh in ticket #1830):\n\n\tsys/kern/subr_workqueue.c: revision 1.40\n\tsys/kern/subr_workqueue.c: revision 1.41\n\tsys/kern/subr_workqueue.c: revision 1.42\n\tsys/kern/subr_workqueue.c: revision 1.43\n\tsys/kern/subr_workqueue.c: revision 1.44\n\tsys/kern/subr_workqueue.c: revision 1.45\n\tsys/kern/subr_workqueue.c: revision 1.46\n\ttests/rump/kernspace/workqueue.c: revision 1.7\n\tsys/kern/subr_workqueue.c: revision 1.47\n\ttests/rump/kernspace/workqueue.c: revision 1.8\n\ttests/rump/kernspace/workqueue.c: revision 1.9\n\ttests/rump/rumpkern/t_workqueue.c: revision 1.3\n\ttests/rump/rumpkern/t_workqueue.c: revision 1.4\n\ttests/rump/kernspace/kernspace.h: revision 1.9\n\ttests/rump/rumpkern/Makefile: revision 1.20\n\tsys/kern/subr_workqueue.c: revision 1.39\n\tshare/man/man9/workqueue.9: revision 1.15\n\t(all via patch)\n\nworkqueue: Lift unnecessary restriction on workqueue_wait.\n\nAllow multiple concurrent waits at a time, and allow enqueueing work\nat the same time (as long as it's not the work we're waiting for).\n\nThis way multiple users can use a shared global workqueue and safely\nwait for individual work items concurrently, while the workqueue is\nstill in use for other items (e.g., wg(4) peers).\n\nThis has the side effect of taking away a diagnostic measure, but I\nthink allowing the diagnostic's false positives instead of rejecting\nthem is worth it. We could cheaply add it back with some false\nnegatives if it's important.\nworkqueue(9): workqueue_wait and workqueue_destroy may sleep.\n\nBut might not, so assert sleepable up front.\nworkqueue(9): Sprinkle dtrace probes.\ntests/rump/rumpkern: Use PROGDPLIBS, not explicit -L/-l.\n\nThis way we relink the t_* test programs whenever changes under\ntests/rump/kernspace change libkernspace.a.\n\nworkqueue(9) tests: Nix trailing whitespace.\n\nworkqueue(9) tests: Destroy struct work immediately on entry.\n\nworkqueue(9) tests: Add test for PR kern/57574.\n\nworkqueue(9): Avoid touching running work items in workqueue_wait.\n\nAs soon as the workqueue function has called, it is forbidden to\ntouch the struct work passed to it -- the function might free or\nreuse the data structure it is embedded in.\n\nSo workqueue_wait is forbidden to search the queue for the batch of\nrunning work items. Instead, use a generation number which is odd\nwhile the thread is processing a batch of work and even when not.\nThere's still a small optimization available with the struct work\npointer to wait for: if we find the work item in one of the per-CPU\n_pending_ queues, then after we wait for a batch of work to complete\non that CPU, we don't need to wait for work on any other CPUs.\nPR kern/57574\n\nworkqueue(9): Sprinkle dtrace probes for workqueue_wait edge cases.\n\nLet's make it easy to find out whether these are hit.\n\nworkqueue(9): Stop violating queue(3) internals.\n\nworkqueue(9): Avoid unnecessary mutex_exit/enter cycle each loop.\n\nworkqueue(9): Sort includes.\nNo functional change intended.\n\nworkqueue(9): Factor out wq->wq_flags & WQ_FPU in workqueue_worker.\nNo functional change intended. Makes it clearer that s is\ninitialized when used.\n" module: src subject: 'CVS commit: [netbsd-9] src' unixtime: '1713455496' user: martin