Mailing Lists: Apple Mailing Lists

Image of Mac OS face in stamp
 
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: "trying to queue a stalled pipe"



Rhoads,
Thank you very much, I didn't know about these requirements.  I'll take a
look at the IOUSBHIDDriver.

Jessica 

-----Original Message-----
From: Rhoads Hollowell [mailto:email@hidden]
Sent: Wednesday, October 01, 2003 1:31 PM
To: Jessica Davies
Cc: email@hidden
Subject: Re: "trying to queue a stalled pipe"


Jessica,

It looks like you need to take a peek at the Apple supplied drives in 
the IOUSBFamily project in Darwin to see how we handle driver 
termination. It appears that you are getting an error on a pipe->Read 
return, and your driver is reissuing the Read before checking to see 
what the error was. Any error will cause the pipe to be stalled at the 
low level, which would cause the behavior you are seeing below when you 
try to reissue the call.

I would suggest you take a look at how we handle a 
kIOReturnNotResponding error in the IOUSBHIDDriver, and also how we 
handle the willTerminate and didTerminate methods.

If your driver has the IOUSBInterface to which it is attached in the 
open() state, then your driver will not get its stop() method invoked 
until you call close() on your provider, but you should not do that if 
you have any outstanding transactions to your provider.

I hope this is helpful.

Rhoads Hollowell
USB Software Team
Apple Computer, Inc.

On Wednesday, October 1, 2003, at 08:48 AM, Jessica Davies wrote:

> Hello,
> I am writing an I/O Kit driver for a composite USB device.  My driver 
> inherits from IOService and is a client of IOUSBDevice.  The device 
> has two interfaces with one interrupt endpoint each, the driver sets 
> up reads on these pipes.  The problem I am having is if the device is 
> hot-unplugged, the stop() method of my driver doesn't get called, and 
> system.log reports:
>
> USBF:        630.397 AppleUSBOHCI[0x18c6000]::CreateGeneralTransfer - 
> trying to queue to a stalled pipe
> USBF:        630.397 AppleUSBOHCI[0x18c6000]::DoIOTransfer - error 
> 0xe000404f queueing request
> USBF:        630.397 AppleUSBOHCI[0x18c6000]::CreateGeneralTransfer - 
> trying to queue to a stalled pipe
> USBF:        630.397 AppleUSBOHCI[0x18c6000]::DoIOTransfer - error 
> 0xe000404f queueing request
>
> I also notice that if I then plug in the device, a new entry gets 
> created in the I/O Registry so the number of entries for the device in 
> the I/O Registry keeps increasing each time I hot-plug the device.  I 
> assume this has something to do with 'trying to queue a stalled pipe" 
> and stop() not getting called?
>
> I thought I might be able to fix the stalled pipe issue by calling 
> Abort() on the IOUSBPipes in my stop() method, but it doesn't change 
> anything.
>
> Thanks for any help,
> Jessica
_______________________________________________
usb mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/usb
Do not post admin requests to the list. They will be ignored.
_______________________________________________
usb mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/usb
Do not post admin requests to the list. They will be ignored.



Visit the Apple Store online or at retail locations.
1-800-MY-APPLE

Contact Apple | Terms of Use | Privacy Policy

Copyright © 2007 Apple Inc. All rights reserved.