From owner-freebsd-current@FreeBSD.ORG Thu Feb 27 06:02:34 2014 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9516216D for ; Thu, 27 Feb 2014 06:02:34 +0000 (UTC) Received: from h2.funkthat.com (gate2.funkthat.com [208.87.223.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 420E31A32 for ; Thu, 27 Feb 2014 06:02:33 +0000 (UTC) Received: from h2.funkthat.com (localhost [127.0.0.1]) by h2.funkthat.com (8.14.3/8.14.3) with ESMTP id s1R62X2f048536 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 26 Feb 2014 22:02:33 -0800 (PST) (envelope-from jmg@h2.funkthat.com) Received: (from jmg@localhost) by h2.funkthat.com (8.14.3/8.14.3/Submit) id s1R62XMp048535; Wed, 26 Feb 2014 22:02:33 -0800 (PST) (envelope-from jmg) Date: Wed, 26 Feb 2014 22:02:32 -0800 From: John-Mark Gurney To: Kohji Okuno Subject: Re: kqueue for usb_dev Message-ID: <20140227060232.GA47921@funkthat.com> Mail-Followup-To: Kohji Okuno , freebsd-current@freebsd.org References: <20140227.142615.924807465819500067.okuno.kohji@jp.panasonic.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20140227.142615.924807465819500067.okuno.kohji@jp.panasonic.com> User-Agent: Mutt/1.4.2.3i X-Operating-System: FreeBSD 7.2-RELEASE i386 X-PGP-Fingerprint: 54BA 873B 6515 3F10 9E88 9322 9CB1 8F74 6D3F A396 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-TipJar: bitcoin:13Qmb6AeTgQecazTWph4XasEsP7nGRbAPE X-to-the-FBI-CIA-and-NSA: HI! HOW YA DOIN? can i haz chizburger? X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.2 (h2.funkthat.com [127.0.0.1]); Wed, 26 Feb 2014 22:02:33 -0800 (PST) Cc: freebsd-current@freebsd.org X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Feb 2014 06:02:34 -0000 Kohji Okuno wrote this message on Thu, Feb 27, 2014 at 14:26 +0900: > I tried add kqueue I/F to usb_dev.c. I attached my patch. > What do you think about my patch? A few comments... 1) You should just drop the use of flag_iskevent and just unconditionally call KNOTE... since you have the lock already held, the cost is minimal (and w/ modern branch prediction, may be cheaper)... 2) Why do you try to start read/write transfers in the _filter? You should just check to see if data is available and not do work.. This is also important since kqueue calls the filter just before delivering the knote to userland to verify that there is still data, and it will call your _event function for each knote on the fd... The work should be started through other mechanisms, like read/write syscall or interrupt or timeout/callout... If it's required to get results from USB_IF_POLL, then it's fine.. 3) I don't see any calls to knlist_destroy... These calls are needed to clean up the knlist... Obviously the #if 1's will need to go... Also, I don't think your change is against HEAD.. The line numbers in my version of usb_dev.c are different... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."