Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 12 May 2000 12:21:57 +0900
From:      Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp>, current@FreeBSD.org
Subject:   Re: select(2) converted to use a condition variable, and optimis
Message-ID:  <200005120321.e4C3Lvp08649@silver.carrots.uucp.r.dl.itc.u-tokyo.ac.jp>
In-Reply-To: <200105100006.f4A06Gj35470@silver.carrots.uucp.r.dl.itc.u-tokyo.ac.jp>
References:  <200105091020.f49AK7P05497@rina.r.dl.itc.u-tokyo.ac.jp> <XFMail.010509092109.jhb@FreeBSD.org> <200105100006.f4A06Gj35470@silver.carrots.uucp.r.dl.itc.u-tokyo.ac.jp>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, 10 May 2001 09:06:15 +0900,
  Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp> said:

Seigo> A quick and hopefully efficient solution to those problems is to
Seigo> fhold() struct file's first, then enter polling loop. That seems much
Seigo> cheaper than to work on free()ing a vnode or a socket with holding a
Seigo> process lock, provided that struct filedesc and file are protected
Seigo> properly (and we have to do it anyway).

That work is now in the patch at:

http://people.FreeBSD.org/~tanimura/patches/selectopt.diff

Another work in that patch is elimination of P_SELECT and nselcoll
check just prior to waiting for selwait. As we now scan file
descriptors with holding a process lock, race with selwakeup() should
never occur during polling.

Please note that netncp and netsmb are not in the scope the solution
discussed above because we can neither lock nor hold a reference to a
socket for now.

Since several issues regarding to the file descriptor layer have risen
up, I am planning to commit the patch soon and work on locking file
descriptors.

-- 
Seigo Tanimura <tanimura@r.dl.itc.u-tokyo.ac.jp> <tanimura@FreeBSD.org>

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200005120321.e4C3Lvp08649>