Per-open file private data for the cdevs

Kostik Belousov kostikbel at gmail.com
Sun May 11 11:50:38 UTC 2008


On Sat, May 10, 2008 at 09:53:12PM -1000, Jeff Roberson wrote:
> On Sun, 4 May 2008, Kostik Belousov wrote:
> 
> >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 descriptor
> >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.
> >
> 
> Hi Kostik,
> 
> Are these per-instances structures intended to be used by anything other 
> than devices?  If not can we make them a union with the DTYPE_VNODE 
> fields to save space?
> 
> 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 ? 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 195 bytes
Desc: not available
Url : http://lists.freebsd.org/pipermail/freebsd-arch/attachments/20080511/8b80e732/attachment.pgp


More information about the freebsd-arch mailing list