Skip to content

Commit 1bde99e

Browse files
committed
Add comment for virtqueue_add_outbuf
1 parent 540fd9d commit 1bde99e

File tree

1 file changed

+13
-0
lines changed

1 file changed

+13
-0
lines changed

x86/crypto/virtio_mini.c

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,19 +66,32 @@ static ssize_t virtio_mini_write(struct file* fil, const char *buf, size_t count
6666
return ENOSPC;
6767
}
6868

69+
/* 分配空间用于保存用户要发送的数据 */
6970
to_send = kmalloc(count, GFP_KERNEL);
7071
if (!to_send)
7172
{
7273
return 1;
7374
}
7475

76+
/* 将用户的数据保存到to_send */
7577
res = copy_from_user(to_send, buf, count);
7678
if (res != 0) {
7779
printk(KERN_INFO "Could not write %lu bytes!", res);
7880
/* update count to actual number of bytes written */
7981
count = count - res;
8082
}
8183

84+
/*
85+
* virtqueue中数据是存VirtQueueElement中的in_sg或out_sg散列中的
86+
* 驱动中用对应的api来打包,这里virtqueue_add_outbuf
87+
* 所以填充的out_sg
88+
*
89+
* 在设备中通过virtqueue_pop来获取到对应的VirtQueueElement后取出散列中的数据
90+
* 1. 取出element
91+
* vqe = virtqueue_pop(vq, sizeof(VirtQueueElement));
92+
* 2. 取出element里的数据
93+
* iov_to_buf(vqe->out_sg, vqe->out_num, 0, rcv_bufs, vqe->out_sg->iov_len);
94+
*/
8295
sg_init_one(&sg, to_send, count);
8396
vmini->buf_lens[vmini->buffers++] = count;
8497
virtqueue_add_outbuf(vq, &sg, 1, to_send, GFP_KERNEL);

0 commit comments

Comments
 (0)