History log of /src/sys/rump/librump/rumpkern/sleepq.c |
Revision | | Date | Author | Comments |
1.28 |
| 13-Oct-2023 |
ad | Rump: sleepq_remove(): don't unlock the sleepq. Spotted by hannken@.
|
1.27 |
| 08-Oct-2023 |
ad | Ensure that an LWP that has taken a legitimate wakeup never produces an error code from sleepq_block(). Then, it's possible to make cv_signal() work as expected and only ever wake a singular LWP.
|
1.26 |
| 05-Oct-2023 |
ad | Resolve !MULTIPROCESSOR build problem with the nasty kernel lock macros.
|
1.25 |
| 04-Oct-2023 |
ad | Eliminate l->l_biglocks. Originally I think it had a use but these days a local variable will do.
|
1.24 |
| 23-Sep-2023 |
ad | - Simplify how priority boost for blocking in kernel is handled. Rather than setting it up at each site where we block, make it a property of syncobj_t. Then, do not hang onto the priority boost until userret(), drop it as soon as the LWP is out of the run queue and onto a CPU. Holding onto it longer is of questionable benefit.
- This allows two members of lwp_t to be deleted, and mi_userret() to be simplified a lot (next step: trim it down to a single conditional).
- While here, constify syncobj_t and de-inline a bunch of small functions like lwp_lock() which turn out not to be small after all (I don't know why, but atomic_*_relaxed() seem to provoke a compiler shitfit above and beyond what volatile does).
|
1.23 |
| 30-Jun-2022 |
knakahara | Fix rump build failure after sleepq.h:r1.35.
|
1.22 |
| 09-Apr-2022 |
riastradh | rumpkern/sleepq: Convert membar_exit/store to atomic_store_release.
|
1.21 |
| 01-Nov-2020 |
christos | PR/55664: Ruslan Nikolaev: Fix:
1. A race condition (bug) in sys/rump/librump/rumpkern/intr.c since rumpuser_cv_signal() is called without holding a mutex 2. sleepq is implemented using a single (global) conditional variable; that should be done per each sleepq separately
|
1.20 |
| 25-Apr-2020 |
bouyer | branches: 1.20.2; Merge the bouyer-xenpvh branch, bringing in Xen PV drivers support under HVM guests in GENERIC. Xen support can be disabled at runtime with boot -c disable hypervisor
|
1.19 |
| 19-Apr-2020 |
ad | good grief..
|
1.18 |
| 26-Mar-2020 |
ad | branches: 1.18.2; sleepq_t is now a LIST. Forgot to commit earlier.
|
1.17 |
| 26-Jan-2016 |
pooka | branches: 1.17.18; 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.16 |
| 24-Apr-2014 |
pooka | branches: 1.16.4; Make sleepq_wake() type void. The return value hasn't been used in almost 6 years. Even if it were, returning an arbitrary lwp is a bit of a wonky interface and can really work only when expected == 1.
|
1.15 |
| 24-Apr-2014 |
pooka | in sleepq_wake(), honor the "expected" parameter
|
1.14 |
| 10-Mar-2013 |
pooka | branches: 1.14.6; 1.14.10; Make RUN_ONCE actually run only once. Also, remove a "slightly" outdated comment.
|
1.13 |
| 28-Jan-2011 |
pooka | branches: 1.13.4; 1.13.14; these days make sure we have an lwp lock (for lwp walker smiths)
|
1.12 |
| 27-Jan-2011 |
pooka | Fill in l_wmesg since some proc-walkers assume it.
|
1.11 |
| 12-Jan-2011 |
pooka | branches: 1.11.2; 1.11.4; 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.10 |
| 18-Dec-2010 |
skrll | Pull in sys/atomic.h so that hp700 can build - needed for membar_exit.
|
1.9 |
| 18-Dec-2010 |
rmind | - Fix a few possible locking issues in execve1() and exit1(). Add a note that scheduler locks are special in this regard - adaptive locks cannot be in the path due to turnstiles. Randomly spotted/reported by uebayasi@. - Remove unused lwp_relock() and replace lwp_lock_retry() by simplifying lwp_lock() and sleepq_enter() a little. - Give alllwp its own cache-line and mark lwp_cache pointer as read-mostly.
OK ad@
|
1.8 |
| 23-Jul-2010 |
pooka | If a thread wake up spuriously, re-set l_mutex to make sure it's still at the original value and not the schedstate one. This makes select not miss wakeups in cases where there was a lot of selecting going on (which is not all that common in a rump kernel).
|
1.7 |
| 22-Jul-2010 |
pooka | Reset l_mutex when waking up a thread. select uses it to determine if a thread is still selecting, and would get a KASSERT panic if the thread had been woken up but not run yet when selnotify() was called.
|
1.6 |
| 17-Nov-2009 |
pooka | branches: 1.6.2; 1.6.4; init global cv only once
|
1.5 |
| 21-Oct-2009 |
rmind | Sync rump with kernel changes.
|
1.4 |
| 16-Oct-2009 |
pooka | In case of timeout, remember to remove ourselves from the sleep staleq.
|
1.3 |
| 16-Oct-2009 |
pooka | Include sys_select.c for proper select()/poll() support.
|
1.2 |
| 18-Dec-2008 |
pooka | branches: 1.2.2; 1.2.6; __KERNEL_RCSID
|
1.1 |
| 10-Oct-2008 |
pooka | branches: 1.1.2; 1.1.4; 1.1.6; 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.1.6.1 |
| 19-Jan-2009 |
skrll | Sync with HEAD.
|
1.1.4.2 |
| 19-Oct-2008 |
haad | Sync with HEAD.
|
1.1.4.1 |
| 10-Oct-2008 |
haad | file sleepq.c was added on branch haad-dm on 2008-10-19 22:18:07 +0000
|
1.1.2.2 |
| 10-Oct-2008 |
skrll | Sync with HEAD.
|
1.1.2.1 |
| 10-Oct-2008 |
skrll | file sleepq.c was added on branch wrstuden-revivesa on 2008-10-10 22:36:16 +0000
|
1.2.6.4 |
| 11-Aug-2010 |
yamt | sync with head.
|
1.2.6.3 |
| 11-Mar-2010 |
yamt | sync with head
|
1.2.6.2 |
| 04-May-2009 |
yamt | sync with head.
|
1.2.6.1 |
| 18-Dec-2008 |
yamt | file sleepq.c was added on branch yamt-nfs-mp on 2009-05-04 08:14:30 +0000
|
1.2.2.2 |
| 17-Jan-2009 |
mjf | Sync with HEAD.
|
1.2.2.1 |
| 18-Dec-2008 |
mjf | file sleepq.c was added on branch mjf-devfs2 on 2009-01-17 13:29:36 +0000
|
1.6.4.1 |
| 05-Mar-2011 |
rmind | sync with head
|
1.6.2.1 |
| 17-Aug-2010 |
uebayasi | Sync with HEAD.
|
1.11.4.1 |
| 08-Feb-2011 |
bouyer | Sync with HEAD
|
1.11.2.1 |
| 06-Jun-2011 |
jruoho | Sync with HEAD.
|
1.13.14.3 |
| 03-Dec-2017 |
jdolecek | update from HEAD
|
1.13.14.2 |
| 20-Aug-2014 |
tls | Rebase to HEAD as of a few days ago.
|
1.13.14.1 |
| 23-Jun-2013 |
tls | resync from head
|
1.13.4.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.14.10.1 |
| 10-Aug-2014 |
tls | Rebase.
|
1.14.6.1 |
| 18-May-2014 |
rmind | sync with head
|
1.16.4.1 |
| 19-Mar-2016 |
skrll | Sync with HEAD
|
1.17.18.2 |
| 21-Apr-2020 |
martin | Sync with HEAD
|
1.17.18.1 |
| 08-Apr-2020 |
martin | Merge changes from current as of 20200406
|
1.18.2.1 |
| 20-Apr-2020 |
bouyer | Sync with HEAD
|
1.20.2.1 |
| 14-Dec-2020 |
thorpej | Sync w/ HEAD.
|