Ticket #2367: ehci_finish_every_ms.diff

File ehci_finish_every_ms.diff, 571 bytes (added by mmlr, 16 years ago)

Possible workaround for lost interrupts on broken controllers.

  • src/add-ons/kernel/busses/usb/ehci.cpp

     
    977977EHCI::FinishTransfers()
    978978{
    979979    while (!fStopThreads) {
    980         if (acquire_sem(fFinishTransfersSem) < B_OK)
     980        status_t result = acquire_sem_etc(fFinishTransfersSem, 1, B_RELATIVE_TIMEOUT, 1000);
     981        if (result != B_OK && result != B_TIMED_OUT)
    981982            continue;
    982983
    983984        // eat up sems that have been released by multiple interrupts