Date: Sun, 4 May 2008 20:10:02 +0300 From: Kostik Belousov <kostikbel@gmail.com> To: arch@freebsd.org Subject: Per-open file private data for the cdevs Message-ID: <20080504171002.GN18958@deviant.kiev.zoral.com.ua>
next in thread | raw e-mail | index | archive | help
--nWESmH2uLuaSkt2F Content-Type: text/plain; charset=us-ascii Content-Disposition: inline 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. --nWESmH2uLuaSkt2F Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (FreeBSD) iEYEARECAAYFAkgd7eoACgkQC3+MBN1Mb4h7+gCglhkTt7vXzC9prLACEuuEAS2Z yzMAoKq8kKbU7J91CuasevEeFscxffY8 =accO -----END PGP SIGNATURE----- --nWESmH2uLuaSkt2F--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080504171002.GN18958>