usb_autopm_get_interface — increment a USB interface's PM-usage counter
int usb_autopm_get_interface ( | struct usb_interface * intf) ; |
This routine should be called by an interface driver when it wants to
use intf
and needs to guarantee that it is not suspended. In addition,
the routine prevents intf
from being autosuspended subsequently. (Note
that this will not prevent suspend events originating in the PM core.)
This prevention will persist until usb_autopm_put_interface
is called
or intf
is unbound. A typical example would be a character-device
driver when its device file is opened.
The routine increments intf
's usage counter. (However if the
autoresume fails then the counter is re-decremented.) So long as the
counter is greater than 0, autosuspend will not be allowed for intf
or its usb_device. When the driver is finished using intf
it should
call usb_autopm_put_interface
to decrement the usage counter and
queue a delayed autosuspend request (if the counter is <= 0).
Note that intf
->pm_usage_cnt is owned by the interface driver. The
core will not change its value other than the increment and decrement
in usb_autopm_get_interface and usb_autopm_put_interface. The driver
may use this simple counter-oriented discipline or may set the value
any way it likes.
Resume method calls generated by this routine can arrive at any time
while intf
is suspended. They are not protected by the usb_device's
lock but only by its pm_mutex. Drivers must provide their own
synchronization.
This routine can run only in process context.