Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.26 50 lines 1.7 kB view raw
1What is anchor? 2=============== 3 4A USB driver needs to support some callbacks requiring 5a driver to cease all IO to an interface. To do so, a 6driver has to keep track of the URBs it has submitted 7to know they've all completed or to call usb_kill_urb 8for them. The anchor is a data structure takes care of 9keeping track of URBs and provides methods to deal with 10multiple URBs. 11 12Allocation and Initialisation 13============================= 14 15There's no API to allocate an anchor. It is simply declared 16as struct usb_anchor. init_usb_anchor() must be called to 17initialise the data structure. 18 19Deallocation 20============ 21 22Once it has no more URBs associated with it, the anchor can be 23freed with normal memory management operations. 24 25Association and disassociation of URBs with anchors 26=================================================== 27 28An association of URBs to an anchor is made by an explicit 29call to usb_anchor_urb(). The association is maintained until 30an URB is finished by (successfull) completion. Thus disassociation 31is automatic. A function is provided to forcibly finish (kill) 32all URBs associated with an anchor. 33Furthermore, disassociation can be made with usb_unanchor_urb() 34 35Operations on multitudes of URBs 36================================ 37 38usb_kill_anchored_urbs() 39------------------------ 40 41This function kills all URBs associated with an anchor. The URBs 42are called in the reverse temporal order they were submitted. 43This way no data can be reordered. 44 45usb_wait_anchor_empty_timeout() 46------------------------------- 47 48This function waits for all URBs associated with an anchor to finish 49or a timeout, whichever comes first. Its return value will tell you 50whether the timeout was reached.