From owner-freebsd-arch@FreeBSD.ORG Sun May 4 17:31:51 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B07BD106566B for ; Sun, 4 May 2008 17:31:51 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from relay01.kiev.sovam.com (relay01.kiev.sovam.com [62.64.120.200]) by mx1.freebsd.org (Postfix) with ESMTP id 68F088FC21 for ; Sun, 4 May 2008 17:31:51 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from [212.82.216.226] (helo=skuns.kiev.zoral.com.ua) by relay01.kiev.sovam.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.67) (envelope-from ) id 1Jshj4-000AWi-Lq for arch@freebsd.org; Sun, 04 May 2008 20:10:15 +0300 Received: from deviant.kiev.zoral.com.ua (root@deviant.kiev.zoral.com.ua [10.1.1.148]) by skuns.kiev.zoral.com.ua (8.14.2/8.14.2) with ESMTP id m44HA6tb012534 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Sun, 4 May 2008 20:10:07 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.2/8.14.2) with ESMTP id m44HA2uJ034212 for ; Sun, 4 May 2008 20:10:02 +0300 (EEST) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.2/8.14.2/Submit) id m44HA2VV034211 for arch@freebsd.org; Sun, 4 May 2008 20:10:02 +0300 (EEST) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Sun, 4 May 2008 20:10:02 +0300 From: Kostik Belousov To: arch@freebsd.org Message-ID: <20080504171002.GN18958@deviant.kiev.zoral.com.ua> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="nWESmH2uLuaSkt2F" Content-Disposition: inline User-Agent: Mutt/1.4.2.3i X-Virus-Scanned: ClamAV version 0.91.2, clamav-milter version 0.91.2 on skuns.kiev.zoral.com.ua X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.4 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on skuns.kiev.zoral.com.ua X-Scanner-Signature: f2683d8df775da069012ccac6e6e6321 X-DrWeb-checked: yes X-SpamTest-Envelope-From: kostikbel@gmail.com X-SpamTest-Group-ID: 00000000 X-SpamTest-Header: Not Detected X-SpamTest-Info: Profiles 2772 [May 04 2008] X-SpamTest-Info: helo_type=3 X-SpamTest-Method: none X-SpamTest-Rate: 0 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0278], KAS30/Release Cc: Subject: Per-open file private data for the cdevs X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 May 2008 17:31:51 -0000 --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--