return -1;
}
- memcpy(buf, module->data + offset, buf_desc->length);
+ memcpy(buf, module->start_addr + offset, buf_desc->length);
+ PrintDebug("Copying module to virtio buffers: SRC=%p, DST=%p, len=%d\n",
+ (void *)(module->start_addr + offset), (void *)buf, buf_desc->length);
if (tmp_status != 0) {
PrintError("Error loading module segment\n");
xfer_len += status_desc->length;
*status_ptr = status;
+ PrintDebug("Transferred %d bytes (xfer_len)\n", xfer_len);
q->used->ring[q->used->index % QUEUE_SIZE].id = q->avail->ring[q->cur_avail_idx % QUEUE_SIZE];
q->used->ring[q->used->index % QUEUE_SIZE].length = xfer_len; // set to total inbound xfer length
}
- if (q->cur_avail_idx < q->avail->index) {
+ if (q->cur_avail_idx != q->avail->index) {
uint16_t notifier_idx = q->avail->ring[q->cur_avail_idx % q->queue_size];
struct symmod_hdr * notifier = NULL;
struct vring_desc * notifier_desc = NULL;