Home | History | Annotate | Download | only in rumpkern
History log of /src/tests/rump/rumpkern/Makefile
RevisionDateAuthorComments
 1.20  09-Aug-2023  riastradh tests/rump/rumpkern: Use PROGDPLIBS, not explicit -L/-l.

This way we relink the t_* test programs whenever changes under
tests/rump/kernspace change libkernspace.a.
 1.19  01-Mar-2020  christos branches: 1.19.8;
Centralize the base rump libraries into a variable used by all the other
Makefiles so that we can make changes to it centrally as needed and have
less mess. Fixes the sun2 build that needs rumpvfs after librump after
the latest changes.
 1.18  26-Dec-2018  thorpej branches: 1.18.2;
Add -lrump after -lkernspace, because kernspace.a references symbols
from librump and hooray for static linking semantics.

Fixes sun2 build issue reported by kre@.

(XXX WTF did this only start failing after the addition of t_threadpool?)
 1.17  24-Dec-2018  thorpej Add rump-based test cases for threadpool(9).
 1.16  29-Sep-2017  maya branches: 1.16.2; 1.16.4;
Add simple test for workqueue(9)
 1.15  10-Jun-2014  he branches: 1.15.16;
Fix static linking for the tests: -lrump is also used by -lrumpuser,
so we also need -lrump after -lrumpuser. Fixes build for sun2.
 1.14  14-Jan-2011  pooka branches: 1.14.12; 1.14.22;
test remove signal delivery
 1.13  14-Jan-2011  pooka elementary tests for rump sigmodels
 1.12  06-Jan-2011  pooka Add some tests for lock errors. Notably, some of them fare nicely
with just the pthread consistency checks (which are enabled by
default in rumpuser), but others require real LOCKDEBUG.
 1.11  13-Dec-2010  pooka Retire h_simpleserver and use rump_server instead.
 1.10  30-Nov-2010  pooka Add a simple and stress test cases for the rump remote syscall code.
Fun fact: since the server daemonizes into its own process group,
it's not in atf's pgrp. Use rump_sys_reboot() in atf cleanup to
kill the server after the test.
 1.9  09-Nov-2010  pooka Test copystr/copyinstr/copyoutstr focusing on the off-by-one cases.

As a notable caveat, this does not test the remote RPC paths of
those routines, which are arguably a little more complex.
 1.8  01-Sep-2010  pooka tests for rump_lwproc
 1.7  31-May-2010  pooka add tests for:
* threading
* tsleep variants
* uvm page busying and wanting
 1.6  25-Jan-2010  pooka msdosfs depends on disk devices now
 1.5  28-Nov-2009  he It seems that LDADD.file gets added to the linker invocation after
the LDADD variable expansion. To support static linking, ensure
that the common libraries gets tacked on at the end as well (order
matters for static linking), by using a convenience variable and
add it to the end of LDADD.t_modlinkset, as well as when doing the
general LDADD+= setting.
 1.4  06-Nov-2009  pooka WARNS=4
 1.3  24-Sep-2009  pooka Add regression test to verify that linksets work correctly with rump.
 1.2  09-Jun-2009  he Apparently, there's not a clear dependency ordering for the libraries,
this becomes apparent when linking statically (e.g. as for sun2).
Add an extra instance of -lrump to the library list so that it can be
linked statically as well.
 1.1  02-May-2009  pooka branches: 1.1.2;
add regression test for module init/fini in rump
 1.1.2.2  13-May-2009  jym Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html
 1.1.2.1  02-May-2009  jym file Makefile was added on branch jym-xensuspend on 2009-05-13 19:19:34 +0000
 1.14.22.1  10-Aug-2014  tls Rebase.
 1.14.12.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.15.16.1  16-Jan-2018  martin 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
 1.16.4.2  08-Apr-2020  martin Merge changes from current as of 20200406
 1.16.4.1  10-Jun-2019  christos Sync with HEAD
 1.16.2.2  01-Jan-2019  pgoyette Bring in some fixes from HEAD to address a couple of build breaks (in
i386 ipmi driver and sun2 rump tests). Also fix a 'resolve conflict'
from previous commit in sparc64

With this, I am able to successfully build 66 out of 67 architectures
(the same architectures as handled by the releng build server. The
only exception is evbarm64 which has a strange build failure during
the installcd step - the same failure occurs on HEAD. It seems to be
something in the build itself, perhaps a difference between handling
of -O vs -M (MAKEOBJDIR vs MAKEOBJDIRPREFIX).
 1.16.2.1  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.18.2.1  18-Apr-2024  martin Pull up following revision(s) (requested by riastradh in ticket #1830):

sys/kern/subr_workqueue.c: revision 1.40
sys/kern/subr_workqueue.c: revision 1.41
sys/kern/subr_workqueue.c: revision 1.42
sys/kern/subr_workqueue.c: revision 1.43
sys/kern/subr_workqueue.c: revision 1.44
sys/kern/subr_workqueue.c: revision 1.45
sys/kern/subr_workqueue.c: revision 1.46
tests/rump/kernspace/workqueue.c: revision 1.7
sys/kern/subr_workqueue.c: revision 1.47
tests/rump/kernspace/workqueue.c: revision 1.8
tests/rump/kernspace/workqueue.c: revision 1.9
tests/rump/rumpkern/t_workqueue.c: revision 1.3
tests/rump/rumpkern/t_workqueue.c: revision 1.4
tests/rump/kernspace/kernspace.h: revision 1.9
tests/rump/rumpkern/Makefile: revision 1.20
sys/kern/subr_workqueue.c: revision 1.39
share/man/man9/workqueue.9: revision 1.15
(all via patch)

workqueue: Lift unnecessary restriction on workqueue_wait.

Allow multiple concurrent waits at a time, and allow enqueueing work
at the same time (as long as it's not the work we're waiting for).

This way multiple users can use a shared global workqueue and safely
wait for individual work items concurrently, while the workqueue is
still in use for other items (e.g., wg(4) peers).

This has the side effect of taking away a diagnostic measure, but I
think allowing the diagnostic's false positives instead of rejecting
them is worth it. We could cheaply add it back with some false
negatives if it's important.
workqueue(9): workqueue_wait and workqueue_destroy may sleep.

But might not, so assert sleepable up front.
workqueue(9): Sprinkle dtrace probes.
tests/rump/rumpkern: Use PROGDPLIBS, not explicit -L/-l.

This way we relink the t_* test programs whenever changes under
tests/rump/kernspace change libkernspace.a.

workqueue(9) tests: Nix trailing whitespace.

workqueue(9) tests: Destroy struct work immediately on entry.

workqueue(9) tests: Add test for PR kern/57574.

workqueue(9): Avoid touching running work items in workqueue_wait.

As soon as the workqueue function has called, it is forbidden to
touch the struct work passed to it -- the function might free or
reuse the data structure it is embedded in.

So workqueue_wait is forbidden to search the queue for the batch of
running work items. Instead, use a generation number which is odd
while the thread is processing a batch of work and even when not.
There's still a small optimization available with the struct work
pointer to wait for: if we find the work item in one of the per-CPU
_pending_ queues, then after we wait for a batch of work to complete
on that CPU, we don't need to wait for work on any other CPUs.
PR kern/57574

workqueue(9): Sprinkle dtrace probes for workqueue_wait edge cases.

Let's make it easy to find out whether these are hit.

workqueue(9): Stop violating queue(3) internals.

workqueue(9): Avoid unnecessary mutex_exit/enter cycle each loop.

workqueue(9): Sort includes.
No functional change intended.

workqueue(9): Factor out wq->wq_flags & WQ_FPU in workqueue_worker.
No functional change intended. Makes it clearer that s is
initialized when used.
 1.19.8.1  04-Sep-2023  martin Pull up following revision(s) (requested by riastradh in ticket #342):

sys/kern/subr_workqueue.c: revision 1.42
sys/kern/subr_workqueue.c: revision 1.43
sys/kern/subr_workqueue.c: revision 1.44
sys/kern/subr_workqueue.c: revision 1.45
sys/kern/subr_workqueue.c: revision 1.46
tests/rump/kernspace/workqueue.c: revision 1.7
sys/kern/subr_workqueue.c: revision 1.47
tests/rump/kernspace/workqueue.c: revision 1.8
tests/rump/kernspace/workqueue.c: revision 1.9
tests/rump/rumpkern/t_workqueue.c: revision 1.3
tests/rump/rumpkern/t_workqueue.c: revision 1.4
tests/rump/kernspace/kernspace.h: revision 1.9
tests/rump/rumpkern/Makefile: revision 1.20

tests/rump/rumpkern: Use PROGDPLIBS, not explicit -L/-l.

This way we relink the t_* test programs whenever changes under
tests/rump/kernspace change libkernspace.a.

workqueue(9) tests: Nix trailing whitespace.

workqueue(9) tests: Destroy struct work immediately on entry.

workqueue(9) tests: Add test for PR kern/57574.

workqueue(9): Avoid touching running work items in workqueue_wait.

As soon as the workqueue function has called, it is forbidden to
touch the struct work passed to it -- the function might free or
reuse the data structure it is embedded in.

So workqueue_wait is forbidden to search the queue for the batch of
running work items. Instead, use a generation number which is odd
while the thread is processing a batch of work and even when not.

There's still a small optimization available with the struct work
pointer to wait for: if we find the work item in one of the per-CPU
_pending_ queues, then after we wait for a batch of work to complete
on that CPU, we don't need to wait for work on any other CPUs.
PR kern/57574

workqueue(9): Sprinkle dtrace probes for workqueue_wait edge cases.

Let's make it easy to find out whether these are hit.

workqueue(9): Stop violating queue(3) internals.

workqueue(9): Avoid unnecessary mutex_exit/enter cycle each loop.

workqueue(9): Sort includes.
No functional change intended.

workqueue(9): Factor out wq->wq_flags & WQ_FPU in workqueue_worker.
No functional change intended. Makes it clearer that s is
initialized when used.

RSS XML Feed