Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 May 2008 21:53:12 -1000 (HST)
From:      Jeff Roberson <jroberson@jroberson.net>
To:        Kostik Belousov <kostikbel@gmail.com>
Cc:        arch@freebsd.org
Subject:   Re: Per-open file private data for the cdevs
Message-ID:  <20080510214812.Y954@desktop>
In-Reply-To: <20080504171002.GN18958@deviant.kiev.zoral.com.ua>
References:  <20080504171002.GN18958@deviant.kiev.zoral.com.ua>

next in thread | previous in thread | raw e-mail | index | archive | help
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



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