Changeset 13101d06 in mainline


Ignore:
Timestamp:
2011-01-15T11:22:51Z (13 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0950397a
Parents:
ff8ed06
Message:

Virtual USB devices set actual transfer size

Location:
uspace
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/vhc/devices.c

    rff8ed06 r13101d06  
    138138                } else {
    139139                        async_wait_for(req, &answer_rc);
     140                        transaction->actual_len = IPC_GET_ARG1(answer_data);
    140141                        rc = (int)answer_rc;
    141142                }
  • uspace/drv/vhc/hc.c

    rff8ed06 r13101d06  
    9696            usb_str_transaction_outcome(outcome));
    9797       
    98         transaction->callback(transaction->buffer, transaction->len, outcome,
    99             transaction->callback_arg);
     98        transaction->callback(transaction->buffer, transaction->actual_len,
     99            outcome, transaction->callback_arg);
    100100}
    101101
     
    169169        transaction->buffer = buffer;
    170170        transaction->len = len;
     171        transaction->actual_len = len;
    171172        transaction->callback = callback;
    172173        transaction->callback_arg = arg;
  • uspace/drv/vhc/hc.h

    rff8ed06 r13101d06  
    6565        /** Transaction data length. */
    6666        size_t len;
     67        /** Data length actually transfered. */
     68        size_t actual_len;
    6769        /** Callback after transaction is done. */
    6870        hc_transaction_done_callback_t callback;
  • uspace/lib/usbvirt/src/callback.c

    rff8ed06 r13101d06  
    160160                        return;
    161161                }
    162                 async_data_read_finalize(callid, buffer, receive_len);
    163         }
    164        
    165         ipc_answer_0(iid, rc);
     162                if (len > receive_len) {
     163                        len = receive_len;
     164                }
     165                async_data_read_finalize(callid, buffer, len);
     166        }
     167       
     168        ipc_answer_1(iid, rc, len);
    166169}
    167170
Note: See TracChangeset for help on using the changeset viewer.