src/dev/arm/ufs_device.cc
/**
 * Transfer done. When the data transfer is done, this function ensures
 * that the application is notified.
 */
Transfer done. When the data transfer is done, this function ensures
that the application is notified.
Transfer done . When the data transfer is done this function ensures that the application is notified .
void
UFSHostDevice::transferDone(Addr responseStartAddr, uint32_t req_pos,
                            struct UTPUPIURSP request_out, uint32_t size,
                            Addr address, uint8_t* destination,
                            bool finished, uint32_t lun_id)
{
    if (UFSDevice[lun_id]->SCSIInfoQueue.empty())
        panic("No SCSI message scheduled lun:%d Doorbell: 0x%8x", lun_id,
              UFSHCIMem.TRUTRLDBR);
    DPRINTF(UFSHostDevice, "DMA start: 0x%8x; DMA size: 0x%8x\n",
            responseStartAddr, sizeof(request_out));
    struct transferStart lastinfo;
    lastinfo.mask = req_pos;
    lastinfo.done = finished;
    lastinfo.address = address;
    lastinfo.size = size;
    lastinfo.destination = reinterpret_cast<UTPTransferReqDesc*>
        (destination);
    lastinfo.lun_id = lun_id;
    transferEnd.push_back(lastinfo);
    DPRINTF(UFSHostDevice, "Transfer done start\n");
    readDevice(false, responseStartAddr, sizeof(request_out),
               reinterpret_cast<uint8_t*>
               (&(UFSDevice[lun_id]->transferInfo.requestOut)),
               true, &UTPEvent);
}
void UFSHostDevice :: transferDone ( Addr responseStartAddr , uint32_t req_pos , struct UTPUPIURSP request_out , uint32_t size , Addr address , uint8_t * destination , bool finished , uint32_t lun_id ) { if ( UFSDevice [ lun_id ] -> SCSIInfoQueue . empty ( ) ) panic ( " " , lun_id , UFSHCIMem . TRUTRLDBR ) ; DPRINTF ( UFSHostDevice , " \n " , responseStartAddr , sizeof ( request_out ) ) ; struct transferStart lastinfo ; lastinfo . mask = req_pos ; lastinfo . done = finished ; lastinfo . address = address ; lastinfo . size = size ; lastinfo . destination = reinterpret_cast < UTPTransferReqDesc * > ( destination ) ; lastinfo . lun_id = lun_id ; transferEnd . push_back ( lastinfo ) ; DPRINTF ( UFSHostDevice , " \n " ) ; readDevice ( false , responseStartAddr , sizeof ( request_out ) , reinterpret_cast < uint8_t * > ( & ( UFSDevice [ lun_id ] -> transferInfo . requestOut ) ) , true , & UTPEvent ) ; }
Transfer done.
Transfer done .
/**Test whether SCSI queue hasn't popped prematurely*/