Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 May 2008 14:50:30 +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:  <20080511115030.GV18958@deviant.kiev.zoral.com.ua>
In-Reply-To: <20080510214812.Y954@desktop>
References:  <20080504171002.GN18958@deviant.kiev.zoral.com.ua> <20080510214812.Y954@desktop>

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

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

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 time =
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 descrip=
tor
> >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 other=
=20
> than devices?  If not can we make them a union with the DTYPE_VNODE=20
> fields to save space?
>=20
> Thanks,
> Jeff

The current version of the patch is at
http://people.freebsd.org/~kib/misc/fdpriv.3.patch

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 destroyed.
This versions adds only one pointer to the struct file.

Jeff, would you, please, explicitely specify what field you propose to
union with the f_cdevpriv ?=20

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

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

iEYEARECAAYFAkgm3YYACgkQC3+MBN1Mb4hbIwCcD28esE9RKMCnFttkosdRl1jq
MtkAoO6YJUCMiv0mpNvlCIj72aX+h+Tj
=CXpv
-----END PGP SIGNATURE-----

--qN4ViQCmXmbGwFFk--



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