Home | History | Annotate | only in /src/tests/rump/rumpkern
History log of /src/tests/rump/rumpkern
RevisionDateAuthorComments
 1.3 13-Jul-2010  jmmv Get rid of static Atffiles and let bsd.test.mk generate them on the fly.
 1.2 24-Sep-2009  pooka Add regression test to verify that linksets work correctly with rump.
 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 Atffile was added on branch jym-xensuspend on 2009-05-13 19:19:34 +0000
 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.
 1.1 23-Jan-2016  christos bridge with the higher Makefile.inc
 1.2 26-Jul-2013  njoly New testcase which checks that rump copyin/copyout/copyinstr/copyoutstr
version return EFAULT for special NULL "user" address.
ok pooka@.
 1.1 09-Nov-2010  pooka branches: 1.1.6; 1.1.12;
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.1.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.1.6.1 22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.6 28-Aug-2020  martin lockme_DOUBLEINIT:
The failure message differs slightly when using LOCKDEBUG, modify the
expected pattern to cover both variants.
 1.5 03-May-2017  pgoyette Fix detection of expected results. The rump kernel code apparently
includes source-code line numbers in the messages, so rather than
hard-coding them in the test, just use a reg-ex to match the text.

Fixes PR bin/52207
 1.4 13-Jan-2017  christos branches: 1.4.4;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.3 30-Jan-2012  njoly branches: 1.3.22;
Adjust MEMFREE expected output to recent kmem(9) changes.
 1.2 06-Jan-2011  pooka branches: 1.2.6;
In case of LOCKDEBUG, expect certain text in the kernel output.
 1.1 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.2.6.1 17-Apr-2012  yamt sync with head
 1.3.22.1 20-Mar-2017  pgoyette Sync with HEAD
 1.4.4.2 11-May-2017  pgoyette Sync with HEAD
 1.4.4.1 03-May-2017  pgoyette Include fix for PR bin/52207 on the localcount2 branch.
 1.10 08-Jan-2020  ad Hopefully fix some problems seen with MP support on non-x86, in particular
where curcpu() is defined as curlwp->l_cpu:

- mi_switch(): undo the ~2007ish optimisation to unlock curlwp before
calling cpu_switchto(). It's not safe to let other actors mess with the
LWP (in particular l->l_cpu) while it's still context switching. This
removes l->l_ctxswtch.

- Move the LP_RUNNING flag into l->l_flag and rename to LW_RUNNING since
it's now covered by the LWP's lock.

- Ditch lwp_exit_switchaway() and just call mi_switch() instead. Everything
is in cache anyway so it wasn't buying much by trying to avoid saving old
state. This means cpu_switchto() will never be called with prevlwp ==
NULL.

- Remove some KERNEL_LOCK handling which hasn't been needed for years.
 1.9 13-Jan-2017  christos branches: 1.9.14;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.8 10-Jan-2017  christos more tests needing <sys/stat.h>
 1.7 21-Jan-2015  pooka branches: 1.7.2;
call previous with the correct args too
 1.6 21-Jan-2015  pooka check that setuid() works for procs with >1 lwp
 1.5 02-Jan-2011  pooka + rump_lwproc_newproc -> rump_lwproc_rfork()
+ add a tess for rump_lwproc_rfork()
 1.4 29-Oct-2010  pooka implicit pid is 1 instead of 0 now
 1.3 07-Sep-2010  pooka +tc (turns out the bug was elsewhere, but a test is always a test)
 1.2 02-Sep-2010  pooka check that curlwp for an implicit context is NULL
 1.1 01-Sep-2010  pooka tests for rump_lwproc
 1.7.2.1 20-Mar-2017  pgoyette Sync with HEAD
 1.9.14.1 08-Apr-2020  martin Merge changes from current as of 20200406
 1.10 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.9 31-May-2010  pooka branches: 1.9.28;
hmm, using unifdef for the previous might have been a good idea ...
 1.8 31-May-2010  pooka Now that atf gdb/coredump conflicts have been solved (thanks jmmv!),
remove USE_ATF ifdefs.
 1.7 01-May-2010  pooka convert to ifdef USE_ATF
 1.6 01-May-2010  pooka Disable module autoload so that it won't foil our module unload test.
 1.5 05-Mar-2010  pooka Update to use newstyle rump_module interfaces.
 1.4 06-Nov-2009  pooka WARNS=4
 1.3 06-Nov-2009  pooka rump_module -> rump_pub_module
 1.2 02-May-2009  pooka branches: 1.2.2;
don't hardcode /usr/lib path
 1.1 02-May-2009  pooka add regression test for module init/fini in rump
 1.2.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.2.2.1 02-May-2009  jym file t_modcmd.c was added on branch jym-xensuspend on 2009-05-13 19:19:34 +0000
 1.9.28.1 20-Mar-2017  pgoyette Sync with HEAD
 1.4 24-May-2022  andvar fix various typos in comments, docs and log messages.
 1.3 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.2 06-Nov-2009  pooka branches: 1.2.28;
WARNS=4
 1.1 24-Sep-2009  pooka Add regression test to verify that linksets work correctly with rump.
 1.2.28.1 20-Mar-2017  pgoyette Sync with HEAD
 1.3 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.2 20-Feb-2011  pooka branches: 1.2.26;
explicitly set the signal model
 1.1 14-Jan-2011  pooka branches: 1.1.2;
elementary tests for rump sigmodels
 1.1.2.1 05-Mar-2011  bouyer Sync with HEAD
 1.2.26.1 20-Mar-2017  pgoyette Sync with HEAD
 1.21 02-Apr-2025  riastradh tests/rump/rumpkern/t_sp: Go fishing for a rump_server core dump.
 1.20 02-Apr-2025  riastradh librumpuser: New RUMPUSER_DEBUG env var enables debug output.

Use it in t_sp:sigsafe to see if we can get more diagnostics out.
 1.19 04-Apr-2024  riastradh branches: 1.19.2;
Temporarily make PR t_sp:sigsafe noisier.

This is an attempt to diagnose why it's flaky in the releng testbeds
but not when I run it. This change will be backed out once we get
new testbed output.
 1.18 04-Apr-2024  riastradh rumpkern/t_sp: Save stdout and stderr to report on failure.

This is not very tidy at the moment, but it's an experiment using the
approach in PR bin/58112, to diagnose why t_sp:sigsafe keeps failing
intermittently. If this works, perhaps can tidy it up and apply it
to all the other tests that run rump_servers.
 1.17 01-Sep-2020  gson Format PR references consistently so that they can be automatically
turned into links in HTML reports.
 1.16 28-Aug-2020  martin Also skip the stress_short test - it just needs way too long to timeout
and fail.
 1.15 28-Aug-2020  martin Skip a few tests with reference to already existing PRs as after "recent"
scheduler changes these tests now leave rump_server processes around that
eat CPU and disturb later tests.
 1.14 13-May-2019  bad Get rid of all the -lrumpdev and -lrumpvfs that are no longer needed
after moving rump's mainbus from rumpdev to rumpkern.

Produces the same atf-run results as before.
 1.13 10-Aug-2016  kre branches: 1.13.14;

+ -lrumpdev
 1.12 30-Aug-2014  gson On systems that have only 32M of memory, the stress_short and
stress_long tests thrash a lot, and the stress_long test sometimes
times out, so skip them if we don't have at least 64M.
 1.11 24-Feb-2011  pooka in reconnect, ignore any all reconnect messages
 1.10 24-Jan-2011  pooka test for rumpclient reconnect feature
 1.9 14-Jan-2011  pooka branches: 1.9.2;
test remove signal delivery
 1.8 12-Jan-2011  pooka Execute a variety of syscalls in the stress test, including opening
files and sockets.
 1.7 12-Jan-2011  pooka * run the killer stress test
* reduce default runtime to 5s
 1.6 10-Jan-2011  pooka Make sure stressclient worker threads complete their operation
instead of hanging.
 1.5 06-Jan-2011  pooka test rumpclient syscalls from a signal handler
 1.4 05-Jan-2011  pooka Some tests for rumpclient fork.
 1.3 13-Dec-2010  pooka Retire h_simpleserver and use rump_server instead.
 1.2 12-Dec-2010  pooka use rump.halt in cleanup
 1.1 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.2.2 05-Mar-2011  bouyer Sync with HEAD
 1.9.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.13.14.1 10-Jun-2019  christos Sync with HEAD
 1.19.2.1 02-Aug-2025  perseant Sync with HEAD
 1.2 28-Dec-2018  thorpej branches: 1.2.2;
Add a test case that exercises repeated sceduling and cancelling of a job,
with periodic dropping of the interlock.
 1.1 24-Dec-2018  thorpej branches: 1.1.2;
Add rump-based test cases for threadpool(9).
 1.1.2.3 18-Jan-2019  pgoyette Synch with HEAD
 1.1.2.2 26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.1.2.1 24-Dec-2018  pgoyette file t_threadpool.c was added on branch pgoyette-compat on 2018-12-26 14:02:10 +0000
 1.2.2.2 10-Jun-2019  christos Sync with HEAD
 1.2.2.1 28-Dec-2018  christos file t_threadpool.c was added on branch phil-wifi on 2019-06-10 22:10:11 +0000
 1.3 29-Sep-2017  maya Run both tests (rather than rumptest_threadjoin twice)
 1.2 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.1 31-May-2010  pooka branches: 1.1.28;
add tests for:
* threading
* tsleep variants
* uvm page busying and wanting
 1.1.28.1 20-Mar-2017  pgoyette Sync with HEAD
 1.2 13-Jan-2017  christos Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.1 31-May-2010  pooka branches: 1.1.28;
add tests for:
* threading
* tsleep variants
* uvm page busying and wanting
 1.1.28.1 20-Mar-2017  pgoyette Sync with HEAD
 1.8 02-Apr-2025  riastradh tests/rump/rumpkern/t_vm: Re-enable test as xfail.

We do, after all, have a way to mark a test as expecting a crash,
namely, with atf_tc_expect_signal(SIGABRT, ...). Also cite the PR
while here.

It is unclear to me what the bug in the test is. Is it supposed to
get the page via uobj->uo_pager->pgo_get (perhaps in turn via
uvm_obj_wirepages) instead of uvm_pagealloc? This should be
explained more clearly in the message (or just fixed).

PR kern/55945: rump/rumpkern/t_vm:busypage fails since early December
 1.7 11-Apr-2023  kre branches: 1.7.2;

PR misc/57343 (Jim Spath) - fixed a typo in atf_tc_skip message.
 1.6 22-Jan-2021  chs for the busypage test, replace atf_tc_expect_fail() with atf_tc_skip()
because atf apparently has no way to expect a test program to crash.
fixes PR 55945.
 1.5 08-Dec-2020  chs the busypage test is buggy, expect it to fail.
 1.4 13-Jan-2017  christos branches: 1.4.16;
Don't play with "../.." in includes for h_macros.h; deal with it centrally.
Minor fixes.
 1.3 17-Mar-2012  hannken branches: 1.3.14;
Starting with Rev. 1.191 of kern/subr_pool.c a pool has to be inactive
for at least 10 seconds before it can be reclaimed.

Change the uvmwait test timeout from 10 to 30 seconds so it has a chance
to reclaim memory and succeed.
 1.2 14-Jun-2010  pooka branches: 1.2.6; 1.2.8;
add a vm allocator test which tests that:
* RUMP_MEMLIMIT works
* allocating memory with PR_NOWAIT will fail immediately if no memory
is available and PR_WAITOK will wait for memory to be available
 1.1 31-May-2010  pooka add tests for:
* threading
* tsleep variants
* uvm page busying and wanting
 1.2.8.1 25-Mar-2012  bouyer Pull up following revision(s) (requested by hannken in ticket #141):
tests/rump/rumpkern/t_vm.c: revision 1.3
sys/rump/librump/rumpkern/vm.c: revision 1.125
Don't take a mutex we already took 6 lines above.
Starting with Rev. 1.191 of kern/subr_pool.c a pool has to be inactive
for at least 10 seconds before it can be reclaimed.
Change the uvmwait test timeout from 10 to 30 seconds so it has a chance
to reclaim memory and succeed.
 1.2.6.1 17-Apr-2012  yamt sync with head
 1.3.14.1 20-Mar-2017  pgoyette Sync with HEAD
 1.4.16.1 06-Jul-2021  martin Pull up following revision(s) - all via patch -
(requested by riastradh in ticket #1317):

sys/uvm/uvm_page.c: revision 1.248
sys/uvm/uvm_anon.c: revision 1.80
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.40
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.41
sys/rump/librump/rumpkern/vm.c: revision 1.191
sys/uvm/uvm_pager.c: revision 1.130
external/cddl/osnet/dist/uts/common/fs/zfs/zfs_vnops.c: revision 1.71
tests/rump/rumpkern/t_vm.c: revision 1.5
tests/rump/rumpkern/t_vm.c: revision 1.6
sys/rump/librump/rumpvfs/vm_vfs.c: revision 1.39

Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
handle this flag separately. Split out the pages part of uvm_aio_aiodone()
into uvm_aio_aiodone_pages() in rump just like in the real kernel.

In ZFS functions that can fail to copy data between the ARC and VM pages,
use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
handle these "I/O" errors. Fixes PR 55702.

fix an incorrect assertion in the previous commit.

Handle PG_PAGEOUT in uvm_anon_release() too.

Commit the ZFS file that I forgot in this previous commit:

Move the handling of PG_PAGEOUT from uvm_aio_aiodone_pages() to
uvm_page_unbusy() so that all callers of uvm_page_unbusy() don't need to
handle this flag separately. Split out the pages part of uvm_aio_aiodone()
into uvm_aio_aiodone_pages() in rump just like in the real kernel.

In ZFS functions that can fail to copy data between the ARC and VM pages,
use uvm_aio_aiodone_pages() rather than uvm_page_unbusy() so that we can
handle these "I/O" errors. Fixes PR 55702.
update the rump copy of uvm_page_unbusy() to match the real version,
in particular handle PG_PAGEOUT. fixes a few atf tests.
the busypage test is buggy, expect it to fail.

make rump's uvm_aio_aiodone_pages() look more like the kernel version.
fixes some more rumpy assertions.

for the busypage test, replace atf_tc_expect_fail() with atf_tc_skip()
because atf apparently has no way to expect a test program to crash.
fixes PR 55945.
 1.7.2.1 02-Aug-2025  perseant Sync with HEAD
 1.4 09-Aug-2023  riastradh 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

XXX pullup-10
XXX pullup-9
XXX pullup-8
 1.3 09-Aug-2023  riastradh workqueue(9) tests: Add test for PR kern/57574.

XXX pullup-10
XXX pullup-9
XXX pullup-8
 1.2 28-Dec-2017  ozaki-r branches: 1.2.2; 1.2.8; 1.2.16;
Add a test case for workqueue_wait
 1.1 29-Sep-2017  maya Add simple test for workqueue(9)
 1.2.16.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.
 1.2.8.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.2.2.2 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.2.2.1 28-Dec-2017  martin file t_workqueue.c was added on branch netbsd-8 on 2018-01-16 13:01:10 +0000
 1.5 24-Jan-2011  pooka test for rumpclient reconnect feature
 1.4 06-Jan-2011  pooka branches: 1.4.2;
test rumpclient syscalls from a signal handler
 1.3 05-Jan-2011  pooka Some tests for rumpclient fork.
 1.2 12-Dec-2010  pooka h_reboot has been superceded by rump.halt
 1.1 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.4.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.2 16-Jul-2019  martin PR misc/54382: whenever open(2) is called with O_CREAT, make sure to
pass an open mode argument.
 1.1 05-Jan-2011  pooka branches: 1.1.46;
Some tests for rumpclient fork.
 1.1.46.1 13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.2 12-Dec-2010  pooka h_reboot has been superceded by rump.halt
 1.1 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.2 19-Feb-2011  pooka set reconnect property now that it's off by default
 1.1 24-Jan-2011  pooka branches: 1.1.2;
test for rumpclient reconnect feature
 1.1.2.3 05-Mar-2011  bouyer Sync with HEAD
 1.1.2.2 08-Feb-2011  bouyer Sync with HEAD
 1.1.2.1 24-Jan-2011  bouyer file h_reconcli.c was added on branch bouyer-quota2 on 2011-02-08 16:20:10 +0000
 1.3 07-Feb-2011  pooka Limit test duration based on wall time instead of loops
(took a long time on slow platforms).
 1.2 10-Jan-2011  pooka branches: 1.2.2;
check that we actually go into the signal handler
 1.1 06-Jan-2011  pooka test rumpclient syscalls from a signal handler
 1.2.2.1 08-Feb-2011  bouyer Sync with HEAD
 1.2 14-Jan-2011  pooka test remove signal delivery
 1.1 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 26-Jun-2011  christos fix fallout from including signal.h in rump_syscallargs.h
 1.8 12-Jan-2011  pooka Execute a variety of syscalls in the stress test, including opening
files and sockets.
 1.7 12-Jan-2011  pooka Give the stress queen two modes: one which nicely suggests an exit
and another one which keeps moet et chandon in her pretty cabinet.
 1.6 12-Jan-2011  pooka Establish signal handler already in parent. Otherwise the child
might be killed before it has a chance to run.
 1.5 11-Jan-2011  pooka Print some more info in an attempt to try to understand why the
test fails in automated test runs but not my desktop.
 1.4 10-Jan-2011  pooka Make sure stressclient worker threads complete their operation
instead of hanging.
 1.3 10-Jan-2011  pooka Don't use printf in a signal handler.

XXX: it would be nice if the deadlock with malloc were a little
more obvious, especially since gdb doesn't provide any clues unless
you compile libpthread with -g
 1.2 06-Jan-2011  pooka check that child exits with an expected status
 1.1 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.7 01-Mar-2020  christos 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.6 01-Jun-2019  kre Deal with fallout from the addition of
KERN_PROC_CWD in sysctl(3)
That is kern.proc.$$.KERN_PROC_CWD (I think - not that it matters here)

The effect is that -lrump now requires -lrumpvfs

This set of changes fixes (I believe) regular dynamic builds,
more might be required for static builds (will be verified soon).
 1.5 07-Jan-2015  pooka branches: 1.5.16;
Move sysproxy support into a separate component, rumpkern_sysproxy,
instead of it being always provided by the rump kernel base. This
move accomplishes two things:

1) it is no longer necessary to provide sysproxy hypercall stubs for
platforms which do not want to use sysproxy
2) it is easier to reason about the security aspects, since configurations
not linking the sysproxy component simply do not support remote
system calls

discussed on rumpkernel-users
 1.4 10-Jun-2014  he Fix static linking for the tests: -lrump is also used by -lrumpuser,
so we also need -lrump after -lrumpuser. Fixes build for sun2.
 1.3 14-Jan-2011  pooka branches: 1.3.12; 1.3.22;
test remove signal delivery
 1.2 13-Dec-2010  pooka Retire h_simpleserver and use rump_server instead.
 1.1 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.3.22.1 10-Aug-2014  tls Rebase.
 1.3.12.1 20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.5.16.2 08-Apr-2020  martin Merge changes from current as of 20200406
 1.5.16.1 10-Jun-2019  christos Sync with HEAD
 1.4 25-Jan-2016  pooka include <stdbool.h> for bool
 1.3 14-Jan-2011  pooka test remove signal delivery
 1.2 13-Dec-2010  pooka Retire h_simpleserver and use rump_server instead.
 1.1 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.

RSS XML Feed