From owner-freebsd-arch@FreeBSD.ORG Wed Nov 7 17:13:45 2007 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E967C16A498 for ; Wed, 7 Nov 2007 17:13:45 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from relay02.kiev.sovam.com (relay02.kiev.sovam.com [62.64.120.197]) by mx1.freebsd.org (Postfix) with ESMTP id 5FDDC13C4C4 for ; Wed, 7 Nov 2007 17:13:45 +0000 (UTC) (envelope-from kostikbel@gmail.com) Received: from [212.82.216.226] (helo=deviant.kiev.zoral.com.ua) by relay02.kiev.sovam.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.67) (envelope-from ) id 1Ipnmv-000BsR-ET for freebsd-arch@freebsd.org; Wed, 07 Nov 2007 18:30:00 +0200 Received: from deviant.kiev.zoral.com.ua (kostik@localhost [127.0.0.1]) by deviant.kiev.zoral.com.ua (8.14.1/8.14.1) with ESMTP id lA7GTqIl018874 for ; Wed, 7 Nov 2007 18:29:53 +0200 (EET) (envelope-from kostikbel@gmail.com) Received: (from kostik@localhost) by deviant.kiev.zoral.com.ua (8.14.1/8.14.1/Submit) id lA7GTqCU018873 for freebsd-arch@freebsd.org; Wed, 7 Nov 2007 18:29:52 +0200 (EET) (envelope-from kostikbel@gmail.com) X-Authentication-Warning: deviant.kiev.zoral.com.ua: kostik set sender to kostikbel@gmail.com using -f Date: Wed, 7 Nov 2007 18:29:52 +0200 From: Kostik Belousov To: freebsd-arch@freebsd.org Message-ID: <20071107162951.GA37471@deviant.kiev.zoral.com.ua> References: <20071031150620.GT37471@deviant.kiev.zoral.com.ua> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="GUfsrdPq8omuo5Le" Content-Disposition: inline In-Reply-To: <20071031150620.GT37471@deviant.kiev.zoral.com.ua> User-Agent: Mutt/1.4.2.3i X-Scanner-Signature: 362d5034abbfed611c52a2913ea5ff69 X-DrWeb-checked: yes X-SpamTest-Envelope-From: kostikbel@gmail.com X-SpamTest-Group-ID: 00000000 X-SpamTest-Info: Profiles 1747 [Nov 07 2007] X-SpamTest-Info: helo_type=3 X-SpamTest-Info: {received from trusted relay: not dialup} X-SpamTest-Method: none X-SpamTest-Method: Local Lists X-SpamTest-Rate: 0 X-SpamTest-Status: Not detected X-SpamTest-Status-Extended: not_detected X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0255], KAS30/Release Subject: Re: fdclone KPI 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: Wed, 07 Nov 2007 17:13:46 -0000 --GUfsrdPq8omuo5Le Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Wed, Oct 31, 2007 at 05:06:20PM +0200, Kostik Belousov wrote: > Dear arch@ readers, > with the important help from Peter Holm I have implemented the KPI that > provides the ability for the driver to implement cloning on the open(2). > This is another (IMHO, more UNIXy) way to provide per-fd private data > for the driver. It seems that at least /dev/apm, /dev/drm and /dev/sg > could immediately benefit from the fdclone() KPI. >=20 > The patch is at > http://people.freebsd.org/~kib/misc/fdclone.9.patch As Oleksandr Tymoshenko pointed out, the patch was not really available at this address. Fixed, sorry. > Sample dumb driver that uses the KPI is at > http://people.freebsd.org/~kib/fclone >=20 > The driver that uses the fdclone() shall provide cdevsw for master device, > and cdevsw for clones. Master shall have d_fdopen() method that could call > int fdclone(struct cdevsw *_csw, struct file *_fp, int _fmode, > struct cdev **_clone, void *si_drv1, struct thread *td); > to replace the reference in the _fp with newly created cdev. >=20 > After successfull fdclone() call, all further calls on the _fp > are dispatched to the clone _csw instead of master one. si_drv1 of the > new cdev is set to respective argument, allowing the clone to find the > master. >=20 > The cloned cdev is not accessible for lookup through the devfs, and is > destroyed automatically on the final close of the last filedescriptor that > references the vnode. >=20 > Please, review. Your feedback is welcome ! --GUfsrdPq8omuo5Le Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.7 (FreeBSD) iD8DBQFHMef/C3+MBN1Mb4gRAn8KAJ4x3J+nj7bdvdRbwZOOjHaGnWXaQgCcDogL 5F8lAqBVDBo4JplfHq3t7PY= =SOI0 -----END PGP SIGNATURE----- --GUfsrdPq8omuo5Le--