• J
    USB: serial: add generic TIOCMIWAIT implementation · 980373b7
    Johan Hovold 提交于
    Add generic TIOCMIWAIT implementation which correctly handles hangup,
    USB-device disconnect, does not rely on the deprecated sleep_on
    functions and hence does not suffer from the races currently affecting
    several usb-serial drivers.
    
    This makes it much easier to add TIOCMIWAIT support to subdrivers as the
    tricky details related to hangup and disconnect (e.g. atomicity, that
    the private port data may have been freed when woken up, and waking up
    processes at disconnect) have been handled once and for all.
    
    To add support to a subdriver, simply set the tiocmiwait-port-operation
    field, update the port icount fields and wake up any process sleeping on
    the tty-port modem-status-change wait queue on changes.
    
    Note that the tty-port initialised flag can be used to detect
    disconnected as the port will be hung up as part of disconnect (and
    cannot be reactivated due to the disconnected flag). However, as the
    tty-port implementation currently wakes up processes before calling port
    shutdown, the tty-hupping flag must also be checked to detect hangup for
    now.
    Signed-off-by: NJohan Hovold <jhovold@gmail.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    980373b7
serial.h 16.0 KB