Date: Tue, 30 Jul 2002 16:50:44 +0800 From: David Xu <davidx@viasoft.com.cn> To: Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp> Cc: Seigo Tanimura <tanimura@FreeBSD.ORG>, cvs-committers@FreeBSD.ORG, cvs-all@FreeBSD.ORG Subject: Re: cvs commit: src/sys/kern kern_condvar.c kern_switch.c kern_synch.c src/sys/sys proc.h src/sys/vm vm_glue.c Message-ID: <200207301650.44420.davidx@viasoft.com.cn> In-Reply-To: <200207300826.g6U8Q9hh055075@silver.carrots.uucp.r.dl.itc.u-tokyo.ac.jp> References: <200207300654.g6U6s5tY099740@freefall.freebsd.org> <200207301612.55467.davidx@viasoft.com.cn> <200207300826.g6U8Q9hh055075@silver.carrots.uucp.r.dl.itc.u-tokyo.ac.jp>
next in thread | previous in thread | raw e-mail | index | archive | help
Yes, and how about cv_abort()?=20
David Xu
On Tuesday 30 July 2002 16:26, Seigo Tanimura wrote:
> On Tue, 30 Jul 2002 16:12:55 +0800,
> David Xu <davidx@viasoft.com.cn> said:
>
> David> could you look carefully timeout handing function? for example,
> David> cv_timedwait_end(), it has same problem with swapping.
>
> Do you mean, for instance, this fragment?
>
> [sys/kern/kern_synch.c]
> static void
> endtsleep(arg)
> void *arg;
> {
> (snip)
> if ((td->td_flags & TDF_TIMEOUT) !=3D 0) {
> td->td_flags &=3D ~TDF_TIMEOUT;
> setrunqueue(td); /* <- XXX! */
>
> Yes, as the state of the thread in question is TDS_SLP, it can be
> swapped out.
>
> The rest of endtsleep() should be all right, setrunnable() takes care
> of a thread swapped out.
>
> David> On Tuesday 30 July 2002 14:54, Seigo Tanimura wrote:
> >> tanimura 2002/07/29 23:54:05 PDT
> >>
> >> Modified files:
> >> sys/kern kern_condvar.c kern_switch.c kern_synch.c
> >> sys/sys proc.h
> >> sys/vm vm_glue.c
> >> Log:
> >> - Optimize wakeup() and its friends; if a thread waken up is being
> >> swapped in, we do not have to ask for the scheduler thread to do
> >> that.
> >>
> >> - Assert that a process is not swapped out in runq functions and
> >> swapout().
> >>
> >> - Introduce thread_safetoswapout() for readability.
> >>
> >> - In swapout_procs(), perform a test that may block (check of a
> >> thread working on its vm map) first. This lets us call swapout()
> >> with the sched_lock held, providing a better atomicity.
> >>
> >> Revision Changes Path
> >> 1.27 +4 -2 src/sys/kern/kern_condvar.c
> >> 1.35 +6 -0 src/sys/kern/kern_switch.c
> >> 1.191 +12 -6 src/sys/kern/kern_synch.c
> >> 1.233 +5 -0 src/sys/sys/proc.h
> >> 1.150 +65 -64 src/sys/vm/vm_glue.c
> >>
> >> To Unsubscribe: send mail to majordomo@FreeBSD.org
> >> with "unsubscribe cvs-all" in the body of the message
>
> To Unsubscribe: send mail to majordomo@FreeBSD.org
> with "unsubscribe cvs-all" in the body of the message
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200207301650.44420.davidx>
