Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 15 Nov 2004 01:05:37 -0700
From:      Scott Long <scottl@freebsd.org>
To:        John-Mark Gurney <gurney_j@resnet.uoregon.edu>
Cc:        "M. Warner Losh" <imp@bsdimp.com>
Subject:   Re: usb with fast interrupts
Message-ID:  <41986351.2070806@freebsd.org>
In-Reply-To: <20041115080155.GH57546@funkthat.com>
References:  <20041112.143439.33211003.imp@bsdimp.com> <41952FBD.40602@freebsd.org> <20041115080155.GH57546@funkthat.com>

next in thread | previous in thread | raw e-mail | index | archive | help
John-Mark Gurney wrote:
> Scott Long wrote this message on Fri, Nov 12, 2004 at 14:48 -0700:
> 
>>M. Warner Losh wrote:
>>
>>>Our usb system supports soft interrupts, but we currently don't make
>>>productive use of them.  The following makes interrupts fast
>>>interrupts and uses taskqueues to queue data to a SWI.
>>>
>>>Lemme know if it works for you.
>>
>>Taskqueues aren't good for timing-sensitive operations.  Even though USB
>>may not be terribly sensitive, I bet you'll actually see performance
>>drops with things like umass with this.  Could you instead just put the
>>real handler into a kthread and wake it up, or use a swi?
> 
> 
> If you need low latency, I made taskqueue's easier to create:
> TASKQUEUE_DEFINE_THREAD(kqueue);
> 
> and then use:
>                 taskqueue_enqueue(taskqueue_kqueue, &kq->kq_task);
> 
> of course replace kqueue w/ your own string...  Check the taskqueue(9)
> man page for more details.
> 

So the only problem with TASKQUEUE_DEFINE_THREAD() is that it appears
impossible at the moment to clean up the thread that this creates when
the driver wants to unload.

Scott



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