Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 May 2008 14:58:15 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        Jeff Roberson <jroberson@jroberson.net>
Cc:        arch@freebsd.org
Subject:   Re: Per-open file private data for the cdevs
Message-ID:  <20080511115815.GW18958@deviant.kiev.zoral.com.ua>
In-Reply-To: <20080511115030.GV18958@deviant.kiev.zoral.com.ua>
References:  <20080504171002.GN18958@deviant.kiev.zoral.com.ua> <20080510214812.Y954@desktop> <20080511115030.GV18958@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help

--/L9TK8VZ3nvnToYi
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Sun, May 11, 2008 at 02:50:30PM +0300, Kostik Belousov wrote:
> On Sat, May 10, 2008 at 09:53:12PM -1000, Jeff Roberson wrote:
> > On Sun, 4 May 2008, Kostik Belousov wrote:
> >=20
> > >Since the review for the clone-at-open patch (fdclone) posted some tim=
e ago
> > >mostly says that it would be better to implement per-file private data
> > >instead, I produced the patch along this line,
> > >
> > >The patch does not change the cdevsw ABI, instead, three new functions
> > >nt	devfs_get_cdevpriv(void **datap);
> > >int	devfs_set_cdevpriv(void *priv, cdevpriv_dtr_t dtr);
> > >void	devfs_clear_cdevpriv(void);
> > >are provided for manipulation of the per-file private data.
> > >
> > >devfs_set_cdevpriv assigns the priv as private data for the file descr=
iptor
> > >which is used to initiate currently performed driver operation. dtr
> > >is the function that will be called when either the last refernce to
> > >the file goes away or devfs_clear_cdevpriv is called.
> > >
> > >devfs_get_cdevpriv is the obvious accessor.
> > >
> > >devfs_clear_cdevpriv allows to clear the private data for the still
> > >open file.
> > >
> > >The synchronization of the cdev data and file private data is left
> > >to the driver code, I did not found any generic helper mechanism that
> > >could be useful there.
> > >
> > >Patch:
> > >http://people.freebsd.org/~kib/misc/fdpriv.1.patch
> > >
> > >Dumb driver that shows the basic usage of the proposed KPI:
> > >http://people.freebsd.org/~kib/misc/fpclone.c
> > >
> > >Previous version of the patch was tested by Peter Holm.
> > >
> >=20
> > Hi Kostik,
> >=20
> > Are these per-instances structures intended to be used by anything othe=
r=20
> > than devices?  If not can we make them a union with the DTYPE_VNODE=20
> > fields to save space?
> >=20
> > Thanks,
> > Jeff
>=20
> The current version of the patch is at
> http://people.freebsd.org/~kib/misc/fdpriv.3.patch
>=20
> Per insistence of John Baldwin and request of Eric Anholt, the destructors
> are called now when either file is last closed, or the device is destroye=
d.
> This versions adds only one pointer to the struct file.
>=20
> Jeff, would you, please, explicitely specify what field you propose to
> union with the f_cdevpriv ?=20

Of course, I forgot to answer the question. Yes, the KPI is supposed to
be used by the drivers only. Please, note that device open files have
DTYPE_VNODE.

--/L9TK8VZ3nvnToYi
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (FreeBSD)

iEYEARECAAYFAkgm31cACgkQC3+MBN1Mb4hZFgCgg3EoqJOLVqCdzU20iDUZUbCl
MfcAoJsv6jMtdtAt/wm6tFLviWIHRveR
=qE5J
-----END PGP SIGNATURE-----

--/L9TK8VZ3nvnToYi--



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