History log of /src/sys/rump/librump/rumpkern/locks_up.c |
Revision | | Date | Author | Comments |
1.14 |
| 02-Nov-2023 |
martin | Back out the following revisions on behalf of core:
sys/sys/lwp.h: revision 1.228 sys/sys/pipe.h: revision 1.40 sys/kern/uipc_socket.c: revision 1.306 sys/kern/kern_sleepq.c: revision 1.84 sys/rump/librump/rumpkern/locks_up.c: revision 1.13 sys/kern/sys_pipe.c: revision 1.165 usr.bin/fstat/fstat.c: revision 1.119 sys/rump/librump/rumpkern/locks.c: revision 1.87 sys/ddb/db_xxx.c: revision 1.78 sys/ddb/db_command.c: revision 1.187 sys/sys/condvar.h: revision 1.18 sys/ddb/db_interface.h: revision 1.42 sys/sys/socketvar.h: revision 1.166 sys/kern/uipc_syscalls.c: revision 1.209 sys/kern/kern_condvar.c: revision 1.60
Add cv_fdrestart() [...] Use cv_fdrestart() to implement fo_restart. Simplify/streamline pipes a little bit [...]
This changes have caused regressions and need to be debugged. The cv_fdrestart() addition needs more discussion.
|
1.13 |
| 13-Oct-2023 |
ad | Add cv_fdrestart() (better name suggestions welcome):
Like cv_broadcast(), but make any LWPs that share the same file descriptor table as the caller return ERESTART when resuming. Used to dislodge LWPs waiting for I/O that prevent a file descriptor from being closed, without upsetting access to the file (not descriptor) made from another direction.
|
1.12 |
| 12-Apr-2023 |
riastradh | kern: Nix mutex_owner.
There is no valid reason to use this except in assertions of the form
KASSERT(mutex_owner(lock) == curlwp),
which is more obviously spelled as
KASSERT(mutex_owned(lock)).
Exception: There's one horrible kludge in zfs that abuses this, which should be eliminated.
XXX kernel revbump -- deleting symbol
PR kern/47114
|
1.11 |
| 22-Feb-2020 |
ad | rump rw_lock_op
|
1.10 |
| 26-Jan-2016 |
pooka | branches: 1.10.18; 1.10.24; Put the kernelside rump kernel headers into <rump-sys> instead of sprinkling them around the faction directories. Avoids having to add a CPPFLAGS (or several) to pretty much every component Makefile.
Leave compat headers around in the old locations.
The commit changes some autogenerated files, but I'll fix the generators shortly and regen.
|
1.9 |
| 06-May-2013 |
pooka | branches: 1.9.12; update for new hypercalls
|
1.8 |
| 28-Apr-2013 |
pooka | Change rumpuser_cv_timedwait() from absolute time to relative time. It's then the hypervisor's problem to translate it accordingly. Now we no longer have to worry about the kernel having to know the hypervisor's time and vice versa.
|
1.7 |
| 27-Apr-2013 |
pooka | Try to make sure that the appropriate calls to mutex_enter() takes a spin mutex (i.e. does not relinquish cpu context while trying to take the mutex).
Bump the hypercall interface version number. I'll be doing a bunch of other cleanups to simplify the interface for the benefit of alternative hypervisor implementations. I'll be riding this bump and doing a second one only after I'm finished with all of the changes.
|
1.6 |
| 28-Apr-2012 |
stacktic | branches: 1.6.2; Fixed build with locks_up.c
|
1.5 |
| 01-Dec-2010 |
pooka | branches: 1.5.8; 1.5.12; implement mutex_owner()
|
1.4 |
| 14-Jun-2010 |
pooka | branches: 1.4.2; 1.4.4; Make it possible to define an upper limit for memory consumed by the rump kernel by specifying RUMP_MEMLIMIT. In case allocation over that limit is attempted, essentially pool reclaim and uvm_wait() is done. The default is to allow to allocate as much as the host will give.
XXX: uvm_km_alloc and malloc(9) do not currently conform. the former is easy, the latter requires kern_malloc.c (rump malloc is currently directly relegated to host malloc).
|
1.3 |
| 03-Jun-2010 |
pooka | Implement a sort-of pagedaemon: adjust all memory allocators to go through an in-rumpkernel hypermemory allocator which knows it should kick the pagedaemon and block in case ``waitok'' memory allocation fails.
This allows us to recover from some out-of-memory situations. Realworld'istically speaking (as opposed to whatever "should be" theory), these OOM situations will happen extremely rarely if ever when our hypervisor is a regular process. Speculatively, this should be useful for other types of hosts.
issues remaining: * the hypervisor does not know how to reclaim kernel memory (and for the reason I stated above, I'm not sure if it makes sense to teach the current implementation about that) * vfs memory (buffers, vm object pages etc.) is not reclaimed
|
1.2 |
| 01-Jun-2010 |
pooka | Don't pass "canfail" down to rumpuser_malloc -- there's quite little we can do with that info way down there. Instead, pass alignment. Implement rumpuser_malloc() with posix_memalign().
|
1.1 |
| 18-May-2010 |
pooka | branches: 1.1.2; Add uniprocessor versions of mutex/rw/cv. They work only on virtual unicpu configurations (i.e. RUMP_NCPU==1), but are massively faster than the multiprocessor versions since the fast path does not have to perform any cache coherent operations. _Applications_ with lock-happy kernel paths, i.e. _not_ lock microbenchmarks, measure up to tens of percents speedup on my Core2 Duo. Every globally atomic state required by normal locks/atomic ops implies a hideous speed penalty even for the fast path.
While this requires a unicpu configuration, it should be noted that we are talking about a virtual unicpu configuration. The host can have as many processors as it desires, and the speed benefit of virtual unicpu is still there. It's pretty obvious that in terms of scalability simple workload partitioning and replication into multiple kernels wins hands down over complicated locking or locklessing algorithms which depend on globally atomic state.
|
1.1.2.4 |
| 05-Mar-2011 |
rmind | sync with head
|
1.1.2.3 |
| 03-Jul-2010 |
rmind | sync with head
|
1.1.2.2 |
| 30-May-2010 |
rmind | sync with head
|
1.1.2.1 |
| 18-May-2010 |
rmind | file locks_up.c was added on branch rmind-uvmplock on 2010-05-30 05:18:06 +0000
|
1.4.4.2 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.4.4.1 |
| 14-Jun-2010 |
uebayasi | file locks_up.c was added on branch uebayasi-xip on 2010-08-17 06:48:01 +0000
|
1.4.2.2 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.4.2.1 |
| 14-Jun-2010 |
yamt | file locks_up.c was added on branch yamt-nfs-mp on 2010-08-11 22:55:06 +0000
|
1.5.12.1 |
| 29-Apr-2012 |
mrg | sync to latest -current.
|
1.5.8.2 |
| 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.5.8.1 |
| 23-May-2012 |
yamt | sync with head.
|
1.6.2.2 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.6.2.1 |
| 23-Jun-2013 |
tls | resync from head
|
1.9.12.1 |
| 19-Mar-2016 |
skrll | Sync with HEAD
|
1.10.24.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.10.18.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|