Mailing Lists: Apple Mailing Lists

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

Synchronous vs Asynchronous DeviceRequests



Hi!

I'm writing a kext to control a USB->Ethernet chip under Mac OS X.
Structurally, it's similar to the USBCDCEthernetDriver example in that it's
derived from IOEthernetController and has the USB device as it's provider.

One of the things I ran into is that while it's possible to make lots of
synchronous DeviceRequest() calls from within the start() method of my
driver, I can't make them from within the enable() method, because the
enable() method is synchronized to the workloop gate, and apparently
synchronous DeviceRequest() calls result in a deadlock at that point.

I've considered making all my DeviceRequest() calls asynchronous, but there
are a *lot* of them (potentially over 20, if the device starts out in a
suspended state...) which need to be made to setup and enable this device,
and it's making for very messy and hard to maintain code, something I prefer
to avoid whenever possible.  I'd like to find some mechanism which would
allow me to defer those device requests and make them all synchronously at
some later point.

As far as I can tell from my research, if I use runAction to defer the
sequence, then it's still going to block on my DeviceRequest() calls, so
that isn't a solution.  Anyone know of a way to resolve this?

-->Steve Bennett

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Usb mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/usb/email@hidden

This email sent to email@hidden



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.