History log of /src/sys/rump/librump/rumpkern/locks.c |
Revision | | Date | Author | Comments |
1.88 |
| 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.87 |
| 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.86 |
| 16-Jul-2023 |
riastradh | rump: Fix comment to reflect l_private -> l_sched.info.
Comment was misspelled `l->private', hence didn't come up in grep.
|
1.85 |
| 16-Jul-2023 |
riastradh | rump: Use l_sched.info, not l_private, for cv waits.
- l_sched is scheduler-private, used only by sched_m2.c, should be safe - l_private is lwp-private, used by tls in user threads, would like to reuse for kthreads too
|
1.84 |
| 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.83 |
| 26-Oct-2022 |
riastradh | rwlock(9): Nix extern _rw_init in .c; use sys/rwlock.h.
|
1.82 |
| 26-Oct-2022 |
riastradh | mutex(9): Properly declare _mutex_init in sys/mutex.h.
|
1.81 |
| 22-Feb-2020 |
ad | rump rw_lock_op
|
1.80 |
| 05-Feb-2018 |
ozaki-r | branches: 1.80.4; 1.80.10; Obtain proper initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc
Initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc were not useful because the addresses were mutex_obj_alloc or rw_obj_alloc itself. What we want to know are callers of them.
(forgot to commit)
|
1.79 |
| 27-Dec-2017 |
ozaki-r | rump: check if the mutex is surely owned by the caller in mutex_exit
Unlocking a not-owned mutex wasn't detected well (it could detect if the mutex is not held by anyone but that's not enough). Let's check it (the check is the same as normal kernel's mutex).
If LOCKDEBUG is enabled, give the check over LOCKDEBUG because it can provide better debugging information.
|
1.78 |
| 27-Dec-2017 |
ozaki-r | Distinguish spin mutex and adaptive mutex on rump kernels for LOCKDEBUG
Formerly rump kernels treated the two types of mutexes as both adaptive for LOCKDEBUG for some reasons.
Now we can detect violations of mutex restrictions on rump kernels such as taking an adaptive mutex with holding a spin mutex as well as normal kernels.
|
1.77 |
| 27-Dec-2017 |
ozaki-r | Tweak LOCKDEBUG macros (NFC)
|
1.76 |
| 25-Dec-2017 |
ozaki-r | Apply C99-style struct initialization to lockops_t
|
1.75 |
| 17-Sep-2017 |
kre | As if rump wasn't constipated enough...
Add some more blockages, hopefully allow the build to find a path all the way to the other end...
|
1.74 |
| 01-May-2017 |
pgoyette | branches: 1.74.2; Introduce mutex_ownable() to determine if it is possible for the current process to acquire a mutex.
|
1.73 |
| 27-Jan-2017 |
ozaki-r | branches: 1.73.4; Unbreak builds of rump libraries with RUMP_LOCKDEBUG
|
1.72 |
| 26-Jan-2016 |
pooka | branches: 1.72.2; 1.72.4; 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.71 |
| 30-Sep-2015 |
ozaki-r | Add lockdebug_barrier
ok pooka@
|
1.70 |
| 30-Sep-2015 |
ozaki-r | Remove redundant UNLOCKED and LOCKED
UNLOCKED and LOCKED are done inside mutex_exit and mutex_enter respectively so we don't need to do them outside mutex_exit and mutex_enter.
Reviewed by pooka@
|
1.69 |
| 25-Apr-2014 |
pooka | branches: 1.69.4; gardenizing rump.c: move rump_lockdebug to locks.c
|
1.68 |
| 11-Mar-2014 |
pooka | branches: 1.68.2; Put the syncobjs in emul.c instead of locks.c so that they are present for both locks.c and locks_up.c alike.
|
1.67 |
| 09-Dec-2013 |
pooka | make !LOCKDEBUG work too
|
1.66 |
| 09-Dec-2013 |
pooka | Support ktrace for rump kernels.
Requested by Justin Cormack on rumpkernel-users.
|
1.65 |
| 03-Jul-2013 |
njoly | Make RUMP_LOCKDEBUG work again. With some help from pooka@.
|
1.64 |
| 15-May-2013 |
pooka | branches: 1.64.2; Pass enums over the hypercall interface as ints to avoid some pathological scenarios from arising in setups where enums might be of a different size in the rump kernel and hypervisor.
|
1.63 |
| 02-May-2013 |
pooka | Push rwlock upgrade and downgrade into the hypervisor where there's at least a chance to implement them with minimal fuss.
|
1.62 |
| 02-May-2013 |
pooka | g/c stale comment
|
1.61 |
| 02-May-2013 |
pooka | Retry enabling spin mutexes. We should be able to avoid poking the scheduler by just making wakeup from cv_wait() honor the same locking order as when a spin mutex is acquired though mutex_enter(). *fingers crossed*
|
1.60 |
| 30-Apr-2013 |
pooka | Make hypercall calling conventions consistent: iff a hypercall can fail, it returns an int containing the error value.
|
1.59 |
| 29-Apr-2013 |
pooka | Disable spin mutexes for now. They need some more work in the case where a spin mutex is used as an argument to cv_wait(). Plus, it would be good to sprinkle some asserts to make sure that the cpu context is not released while holding on to a spin mutex. All in all, should not be difficult, but needs careful testing and bravery (the scheduler will bite your legs off).
|
1.58 |
| 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.57 |
| 27-Apr-2013 |
pooka | roll mutex init hypercalls into one (one of them already took a flag anyway)
|
1.56 |
| 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.55 |
| 06-Dec-2011 |
njoly | branches: 1.55.6; Do not protect wrong KASSERT by LOCKEDBUG ifdef/endif, the latter uses its own mecanism. Kill them both. From discussion with pooka@.
|
1.54 |
| 21-Mar-2011 |
pooka | branches: 1.54.4; 1.54.8; Update copyright statements.
no functional change.
|
1.53 |
| 09-Mar-2011 |
pooka | track lockdebug data even in the special path
|
1.52 |
| 09-Mar-2011 |
pooka | Mark cv_wait mutex as locked before doing any further dances. Fixes a LOCKDEBUG panic in case the uncommon condition is hit.
|
1.51 |
| 08-Mar-2011 |
pooka | Nuke all threads belonging to a process calling exec before allowing the exec handshake to return.
In addition to being The Right Thing To Do, fixes some nasty conditions for CLOEXEC fd's (or at least does so in theory, I couldn't create any problems although I tried).
|
1.50 |
| 28-Jan-2011 |
pooka | If we are "unsleepable" due to a dying proc, yield() instead of returning directly. This allows other threads to run possible setting a condition we are waiting on.
Fixes a busyloop condition which could be entered from vfs_unmountall() where we were waiting for vrele_pending and the vrele thread could not run since we were hogging the CPU.
|
1.49 |
| 28-Jan-2011 |
pooka | Some lwp-walkers expect the correct value for l_stat, so use a flag in l_flag instead of l_stat for the purpose of flagging lwps in a dying proc.
|
1.48 |
| 18-Jan-2011 |
haad | branches: 1.48.2; Add support for compiling ZFS and Solaris modules as RUMP libraries. Add some locking and rumpcopy primitives and refactor module building Makefiles to work with both RUMP and kernel modules. This is first part of adding support for regular test of zfs on NetBSD to hunt some bugs and make it stable.
Ok by pooka@.
|
1.47 |
| 12-Jan-2011 |
pooka | branches: 1.47.2; When the client and the rump kernel are the same host process, all threads blocking in the kernel automatically exit when the process exists. However, for the sysproxy case this does not hold. Typically it's ~harmless, but e.g. in the case of socket binding following by poll it gets annoying.
Introduce sysproxy procexit, which wakes up all threads blocking on a condition when a process's communication socket is closed. The code is a little different from the regular kernel simply because in a rump kernel l_mutex is not available at all times (this is because scheduling happens on every kernel entry and exit, and that path must be kept lockless for any reasonable performance). Instead, use gating which makes sure all threads are either out of the cv code or suspended in a well-known state. Then, wake up the threads and tell them to get the hell out of our galaxy.
|
1.46 |
| 06-Jan-2011 |
pooka | antipasto
|
1.45 |
| 06-Jan-2011 |
pooka | Support LOCKDEBUG. To use it, compile sys/rump with RUMP_LOCKDEBUG=yes.
requested by martin (sparc64 gdb cannot reliably produce a stack trace)
|
1.44 |
| 01-Dec-2010 |
pooka | implement mutex_owner()
|
1.43 |
| 01-Dec-2010 |
pooka | Track lwp as the rumpuser mutex owner instead of pthread_t (this is done in rumpuser for simplicity, since on the kernel side things we assume we have only one pointer of space). As a side-effect, we can no longer know if the current thread is holding on to a mutex locked without curlwp context (basically all mutexes inited outside of mutex_init()). The only thing that called rumpuser_mutex_held() for a non-kmutex was the giant lock. So, instead implement recursive locking for the giant lock in the rump kernel and get rid of the now-unused recursive pthread mutex in the hypercall interface.
|
1.42 |
| 09-Jun-2010 |
pooka | Similarly to cv_wait, fail if trying to cv_wait_sig() without threads.
|
1.41 |
| 18-May-2010 |
pooka | Move routines related to kernel locking and scheduling from locks.c to klock.c.
No functional change.
|
1.40 |
| 18-May-2010 |
pooka | Make it possible to use the scheduler lock as the rumpuser condvar interlock. This is applicable in cases where the actual interlock is the CPU the currently running thread is scheduled on. Borrowing the scheduler lock as the mutex mandated by pthread_cond_wait() does away with need to have an additional mutex. This both optimizes runtime execution and simplifies code, as the extra lock typically lead to quite some trickeries to avoid the dungeon collapsing due to zaps from the wand of deadlock.
|
1.39 |
| 14-Apr-2010 |
pooka | Add comment about clock mismatch.
|
1.38 |
| 31-Jan-2010 |
snj | branches: 1.38.2; 1.38.4; Some might argue that it is benefi_c_ial to spell words correctly.
|
1.37 |
| 03-Dec-2009 |
pooka | Remove last remnants of the long-ago-properly-fixed RUMP_LMUTEX_MAGIC hack.
|
1.36 |
| 01-Dec-2009 |
pooka | Almost there for virtual CPU MP support: * support bound kernel threads * bind softint threads to specific virtual cpus + remove now-unnecessary locks from softint code
Now, if we only had MI CPU_INFO_FOREACH() .... (hi rmind ;)
|
1.35 |
| 26-Nov-2009 |
pooka | Provide some sort of cv_is_valid(). What a silly routine.
|
1.34 |
| 11-Nov-2009 |
pooka | Make rumpuser_cv_timedwait take two int64's instead timespec to uncouple it from the timespec layout. Also, change return value to zero for "timeout didn't expire" and non-zero for "timeout expired". This decouples the interface from errno assignments.
|
1.33 |
| 04-Nov-2009 |
pooka | Use kern_mutex_obj.c directly instead of copypasting code.
|
1.32 |
| 16-Oct-2009 |
pooka | Include sys_select.c for proper select()/poll() support.
|
1.31 |
| 15-Oct-2009 |
pooka | When allocating the temporary lwp we must have an lwp context. So take turns using lwp0 for this purpose, nothing else uses it.
|
1.30 |
| 15-Oct-2009 |
pooka | Give lwp usage some much-needed love: stop treating lwp0 as the all-sink and make sure each separate thread in rump has its own lwp. Happy-go-lucky callers will get scheduled a temporary lwp on entry, while true lwp connoisseurs may request a stable lwp for their purposes. Some more love may be required later down the road, but for now different threads will stepping on each others toes.
|
1.29 |
| 15-Oct-2009 |
pooka | Add initial work on a rump virtual cpu scheduler. This is necessary for kernel code which has been written to avoid MP contention by using cpu-local storage (most prominently, select and pool_cache).
Instead of always assuming rump_cpu, the scheduler must now be run (and unrun) on all entry points into rump. Likewise, rumpuser unruns and re-runs the scheduler around each potentially blocking operation. As an optimization, I modified some locking primitives to try to get the lock without blocking before releasing the cpu.
Also, ltsleep was modified to assume that it is never called without the biglock held and made to use the biglock as the sleep interlock. Otherwise there is just too much drama with deadlocks. If some kernel code wants to call ltsleep without the biglock, then, *snif*, it's no longer supported and rump and should be modified to support newstyle locks anyway.
|
1.28 |
| 02-Oct-2009 |
pooka | panic if cv_wait() is called in non-threaded mode
|
1.27 |
| 07-Feb-2009 |
pooka | Make the clock interrupt tick based on absolute time instead of relative time. This prevents drifting. Also, keep track of time within userspace, so we do not have to make a syscall to get the clock value. This is approximately 7 times cheaper, but on the negative side is limited to the clock interrupt frequency.
|
1.26 |
| 13-Jan-2009 |
pooka | misc cleanup, mainly header polish
|
1.25 |
| 19-Dec-2008 |
pooka | CTASSERT kcondvar size
|
1.24 |
| 19-Dec-2008 |
pooka | fix build
(hi thorpej! the first one is always free ;)
|
1.23 |
| 18-Dec-2008 |
pooka | __KERNEL_RCSID
|
1.22 |
| 13-Dec-2008 |
pooka | Get rid of local machine/{mutex,rwlock}.h files by treating the object storage as a single pointer (all archs have at least one uintptr_t in the objects).
|
1.21 |
| 10-Dec-2008 |
pooka | Make kernel biglock recursecount volatile.
|
1.20 |
| 10-Oct-2008 |
pooka | branches: 1.20.2; Support callouts and call callout_hardclock() from the timer interrupt thread.
The sleepq implementation required for callouts is horrible, kludged only for callouts, and generally unacceptable. It needs revisiting, but I'm not sure yet should rump or kern_timeout be improved. It's almost untested as of now, but committing this will give me some maneuvering space while letting application compile.
|
1.19 |
| 09-Oct-2008 |
pooka | Rewrite kernel lockus maximus handling to be correct.
|
1.18 |
| 29-Jul-2008 |
pooka | Install rump libraries and utilities to the base system and remove the private non-installed build infrastructure from sys/rump.
breakdown of commit: * install relevant headers into /usr/include/rump * build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern from src/lib and install as librumpuser and librump, respectively + this retains the ability to test a librump build with just the kernel sources at hand * move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib for general consumption, they are not kernel-space dwellers anyway * build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs * add chapter 3 manual pages for rump, rumpuser, ukfs and p2k * build and install userspace kernel file system daemons if MKPUFFS=yes is spexified * retire fsconsole for now, it will make a comeback with an actually implemented version shortly
|
1.17 |
| 18-Jul-2008 |
pooka | support cv_has_waiters()
|
1.16 |
| 31-May-2008 |
ad | branches: 1.16.2; 1.16.4; Turn off DIAGNOSTIC so it builds.
|
1.15 |
| 28-Apr-2008 |
martin | branches: 1.15.2; Remove clause 3 and 4 from TNF licenses
|
1.14 |
| 11-Apr-2008 |
ad | branches: 1.14.2; 1.14.4; More stubs.
|
1.13 |
| 01-Apr-2008 |
drochner | remove useless passing of the lwp from the KERNEL_LOCK() ABI (not the API; this would be easy as well) agreed (a while ago) by ad
|
1.12 |
| 11-Mar-2008 |
pooka | Backup some fixes for recent breakage from local tree. Also some other improvements such as exporting the real kernel namei and using that in ukfs instead of the homegrown heap'o hacks namei. "etcetc".
|
1.11 |
| 30-Jan-2008 |
ad | branches: 1.11.2; 1.11.6; Fix pasto. Spotted by pooka@
|
1.10 |
| 30-Jan-2008 |
ad | Replace struct lock on vnodes with a simpler lock object built on krwlock_t. This is a step towards removing lockmgr and simplifying vnode locking. Discussed on tech-kern.
|
1.9 |
| 21-Jan-2008 |
pooka | In case cv_timedwait() gets ticks == 0, make sure we sleep eternally (or at least until wakeup) instead of immediately waking up.
In other words, fix this after it broke when another piece of the code was fixed. Ain't programming fun?
|
1.8 |
| 02-Jan-2008 |
ad | Fix merge error.
|
1.7 |
| 02-Jan-2008 |
ad | Merge vmlocking2 to head.
|
1.6 |
| 01-Jan-2008 |
pooka | emulate a couple more locking interfaces
|
1.5 |
| 30-Dec-2007 |
pooka | steal 1.4.2.1 from vmlocking2: cv_xwait_sig()
|
1.4 |
| 19-Nov-2007 |
pooka | branches: 1.4.2; 1.4.6; support cv_broadcast()
|
1.3 |
| 17-Nov-2007 |
pooka | Implement cv_timedwait(), requested by Reinoud.
|
1.2 |
| 07-Nov-2007 |
pooka | branches: 1.2.2; 1.2.4; implement _kernel_lock{,_unlock}()
|
1.1 |
| 31-Oct-2007 |
pooka | branches: 1.1.2; 1.1.4; 1.1.6; Make it possible to run rumps multithreaded. This brings real locking and makes it possible to run file systems which create threads. It also makes rump file system behaviour better match file system behaviour in the kernel.
|
1.1.6.5 |
| 23-Mar-2008 |
matt | sync with HEAD
|
1.1.6.4 |
| 09-Jan-2008 |
matt | sync with HEAD
|
1.1.6.3 |
| 08-Nov-2007 |
matt | sync with -HEAD
|
1.1.6.2 |
| 06-Nov-2007 |
matt | sync with HEAD
|
1.1.6.1 |
| 31-Oct-2007 |
matt | file locks.c was added on branch matt-armv6 on 2007-11-06 23:34:36 +0000
|
1.1.4.3 |
| 18-Feb-2008 |
mjf | Sync with HEAD.
|
1.1.4.2 |
| 08-Dec-2007 |
mjf | Sync with HEAD.
|
1.1.4.1 |
| 19-Nov-2007 |
mjf | Sync with HEAD.
|
1.1.2.4 |
| 21-Nov-2007 |
joerg | Sync with HEAD.
|
1.1.2.3 |
| 11-Nov-2007 |
joerg | Sync with HEAD.
|
1.1.2.2 |
| 31-Oct-2007 |
joerg | Sync with HEAD.
|
1.1.2.1 |
| 31-Oct-2007 |
joerg | file locks.c was added on branch jmcneill-pm on 2007-10-31 23:14:16 +0000
|
1.2.4.6 |
| 17-Mar-2008 |
yamt | sync with head.
|
1.2.4.5 |
| 04-Feb-2008 |
yamt | sync with head.
|
1.2.4.4 |
| 21-Jan-2008 |
yamt | sync with head
|
1.2.4.3 |
| 07-Dec-2007 |
yamt | sync with head
|
1.2.4.2 |
| 15-Nov-2007 |
yamt | sync with head.
|
1.2.4.1 |
| 07-Nov-2007 |
yamt | file locks.c was added on branch yamt-lazymbuf on 2007-11-15 11:45:26 +0000
|
1.2.2.4 |
| 21-Nov-2007 |
bouyer | Sync with HEAD
|
1.2.2.3 |
| 18-Nov-2007 |
bouyer | Sync with HEAD
|
1.2.2.2 |
| 13-Nov-2007 |
bouyer | Sync with HEAD
|
1.2.2.1 |
| 07-Nov-2007 |
bouyer | file locks.c was added on branch bouyer-xenamd64 on 2007-11-13 16:03:14 +0000
|
1.4.6.2 |
| 23-Jan-2008 |
bouyer | Sync with HEAD.
|
1.4.6.1 |
| 02-Jan-2008 |
bouyer | Sync with HEAD
|
1.4.2.1 |
| 28-Dec-2007 |
ad | Make rump build.
|
1.11.6.4 |
| 17-Jan-2009 |
mjf | Sync with HEAD.
|
1.11.6.3 |
| 28-Sep-2008 |
mjf | Sync with HEAD.
|
1.11.6.2 |
| 02-Jun-2008 |
mjf | Sync with HEAD.
|
1.11.6.1 |
| 03-Apr-2008 |
mjf | Sync with HEAD.
|
1.11.2.1 |
| 24-Mar-2008 |
keiichi | sync with head.
|
1.14.4.4 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.14.4.3 |
| 11-Mar-2010 |
yamt | sync with head
|
1.14.4.2 |
| 04-May-2009 |
yamt | sync with head.
|
1.14.4.1 |
| 16-May-2008 |
yamt | sync with head.
|
1.14.2.2 |
| 04-Jun-2008 |
yamt | sync with head
|
1.14.2.1 |
| 18-May-2008 |
yamt | sync with head.
|
1.15.2.3 |
| 10-Oct-2008 |
skrll | Sync with HEAD.
|
1.15.2.2 |
| 18-Sep-2008 |
wrstuden | Sync with wrstuden-revivesa-base-2.
|
1.15.2.1 |
| 23-Jun-2008 |
wrstuden | Sync w/ -current. 34 merge conflicts to follow.
|
1.16.4.2 |
| 13-Dec-2008 |
haad | Update haad-dm branch to haad-dm-base2.
|
1.16.4.1 |
| 19-Oct-2008 |
haad | Sync with HEAD.
|
1.16.2.2 |
| 31-Jul-2008 |
simonb | Sync with head.
|
1.16.2.1 |
| 21-Jul-2008 |
simonb | Sync with head.
|
1.20.2.2 |
| 03-Mar-2009 |
skrll | Sync with HEAD.
|
1.20.2.1 |
| 19-Jan-2009 |
skrll | Sync with HEAD.
|
1.38.4.4 |
| 21-Apr-2011 |
rmind | sync with head
|
1.38.4.3 |
| 05-Mar-2011 |
rmind | sync with head
|
1.38.4.2 |
| 03-Jul-2010 |
rmind | sync with head
|
1.38.4.1 |
| 30-May-2010 |
rmind | sync with head
|
1.38.2.2 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.38.2.1 |
| 30-Apr-2010 |
uebayasi | Sync with HEAD.
|
1.47.2.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.48.2.1 |
| 08-Feb-2011 |
bouyer | Sync with HEAD
|
1.54.8.1 |
| 18-Feb-2012 |
mrg | merge to -current.
|
1.54.4.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.54.4.1 |
| 17-Apr-2012 |
yamt | sync with head
|
1.55.6.3 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.55.6.2 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.55.6.1 |
| 23-Jun-2013 |
tls | resync from head
|
1.64.2.2 |
| 18-May-2014 |
rmind | sync with head
|
1.64.2.1 |
| 28-Aug-2013 |
rmind | sync with head
|
1.68.2.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.69.4.4 |
| 28-Aug-2017 |
skrll | Sync with HEAD
|
1.69.4.3 |
| 05-Feb-2017 |
skrll | Sync with HEAD
|
1.69.4.2 |
| 19-Mar-2016 |
skrll | Sync with HEAD
|
1.69.4.1 |
| 27-Dec-2015 |
skrll | Sync with HEAD (as of 26th Dec)
|
1.72.4.1 |
| 21-Apr-2017 |
bouyer | Sync with HEAD
|
1.72.2.1 |
| 20-Mar-2017 |
pgoyette | Sync with HEAD
|
1.73.4.3 |
| 02-May-2017 |
pgoyette | Sync with HEAD - tag prg-localcount2-base1
|
1.73.4.2 |
| 30-Apr-2017 |
pgoyette | Use the right conditional to enable/disable LOCKDEBUG within RUMP
|
1.73.4.1 |
| 30-Apr-2017 |
pgoyette | Introduce mutex_ownable(9) and use it in localcount_release(9).
Commit of same code to head is awaiting discussion on tech-kern.
|
1.74.2.2 |
| 02-Apr-2018 |
martin | Pull up following revision(s) (requested by ozaki-r in ticket #687): sys/kern/kern_rwlock_obj.c: revision 1.4 sys/rump/librump/rumpkern/locks.c: revision 1.80 sys/kern/kern_rwlock.c: revision 1.50 sys/arch/x86/x86/db_memrw.c: revision 1.5,1.6 sys/ddb/db_command.c: revision 1.150-1.153 share/man/man4/ddb.4: revision 1.175 (via patch),1.176-1.178 sys/kern/kern_mutex_obj.c: revision 1.6 sys/kern/subr_lockdebug.c: revision 1.61-1.64 sys/sys/lockdebug.h: revision 1.17 sys/kern/kern_mutex.c: revision 1.71 sys/sys/lockdebug.h: revision 1.18,1.19 sys/kern/subr_xcall.c: revision 1.26
Obtain proper initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc
Initialized addresses of locks allocated by mutex_obj_alloc or rw_obj_alloc were not useful because the addresses were mutex_obj_alloc or rw_obj_alloc itself. What we want to know are callers of them.
Spinkle ASSERT_SLEEPABLE to xcall functions
Use db_printf instead of printf in ddb
Add a new command, show lockstat, which shows statistics of locks Currently the command shows the number of allocated locks. The command is useful only if LOCKDEBUG is enabled.
Add a new command, show all locks, which shows information of active locks
The command shows information of all active (i.e., being held) locks that are tracked through either of LWPs or CPUs by the LOCKDEBUG facility. The /t modifier additionally shows a backtrace for each LWP additionally. This feature is useful for debugging especially to analyze deadlocks. The command is useful only if LOCKDEBUG is enabled.
Don't pass a unset address to lockdebug_lock_print
x86: avoid accessing invalid addresses in ddb like arm32 This avoids that a command stops in the middle of an execution if a fault occurs due to an access to an invalid address.
Get rid of a redundant output
Improve wording. Fix a Cm argument.
ddb: rename "show lockstat" to "show lockstats" to avoid conflicting with lockstat(8) Requested by mrg@
|
1.74.2.1 |
| 13-Jan-2018 |
snj | Pull up following revision(s) (requested by ozaki-r in ticket #495): lib/librumpuser/rumpfiber.c: revision 1.13 lib/librumpuser/rumpuser_pth.c: revision 1.46 lib/librumpuser/rumpuser_pth_dummy.c: revision 1.18 sys/kern/kern_condvar.c: revision 1.40 sys/kern/kern_lock.c: revision 1.161 sys/kern/kern_mutex.c: revision 1.68 sys/kern/kern_rwlock.c: revision 1.48 sys/rump/include/rump/rumpuser.h: revision 1.115 sys/rump/librump/rumpkern/locks.c: revision 1.76-1.79 Apply C99-style struct initialization to lockops_t -- Tweak LOCKDEBUG macros (NFC) -- Distinguish spin mutex and adaptive mutex on rump kernels for LOCKDEBUG Formerly rump kernels treated the two types of mutexes as both adaptive for LOCKDEBUG for some reasons. Now we can detect violations of mutex restrictions on rump kernels such as taking an adaptive mutex with holding a spin mutex as well as normal kernels. -- rump: check if the mutex is surely owned by the caller in mutex_exit Unlocking a not-owned mutex wasn't detected well (it could detect if the mutex is not held by anyone but that's not enough). Let's check it (the check is the same as normal kernel's mutex). If LOCKDEBUG is enabled, give the check over LOCKDEBUG because it can provide better debugging information.
|
1.80.10.1 |
| 29-Feb-2020 |
ad | Sync with head.
|
1.80.4.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|