Re: [patch] turning devctl into a "multiple openable" device
--FL5UXtIhxfXey3p5
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Wed, Nov 30, 2011 at 05:20:17PM +0100, Olivier Houchard wrote:
> On Wed, Nov 30, 2011 at 06:04:50PM +0200, Kostik Belousov wrote:
> > > > I wonder why the waiting_threads stuff is needed at all. The cv cou=
ld
> > > > be woken up unconditionally everytime. What is the reason for the c=
v_wait
> > > > call in cdevpriv data destructor ? You cannot have a thread doing e=
=2Eg.
> > > > read on the file descriptor while destructor is run.
> > > >=20
> > >=20
> > > What will prevent you from having a thread stuck in read(), while an =
another=20
> > > one close() the fd ?
> > >=20
> > Nothing, but file reference count goes to zero only after the thread
> > stuck in read is unstuck. Cdevpriv destructor is run only when file
> > reference count becomes zero, i.e. there can be no any accessing thread=
s,
> > and new accesses are impossible since file descriptors also own referen=
ces
> > on the file.
>=20
> Right, I was a bit confused, this part can be removed.
>=20
> Regards,
>=20
> Olivier
Here is a new version of the patch mostly reworked by Olivier,
It doesn't duplicate anymore the devq, and fix all that have been
spotted here previously.
http://people.freebsd.org/~bapt/devctl_multi_open.diff
bonus, it removes the needless giant lock
regards,
Bapt
--FL5UXtIhxfXey3p5
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.18 (FreeBSD)
iEYEARECAAYFAk7YCwEACgkQ8kTtMUmk6ExLuACgttivMDuC+ZsXNQ2Kd4kPAPhm
wiUAn1uXcrEk2gIZCW2ZH98/LUFexh2l
=wL+Q
-----END PGP SIGNATURE-----
--FL5UXtIhxfXey3p5--
討論串 (同標題文章)
完整討論串 (本文為第 11 之 12 篇):