回复:[PATCH] virtio: replace constant parameter '1' with num

From: 刘邵华BTD
Date: Tue Dec 08 2020 - 21:15:30 EST


Hi Michael,
>> 'num' can represent the value of out_sgs(in_sags), no need to pass
>> in constant parameters in 'virtqueue_add'.
>>
>> Signed-off-by: liush <liush@xxxxxxxxxxxxxxxxx>

>Point being?
>A constant is likely easier for the compiler to optimize ...

Thanks.
I was unaware that a constant was for compiler optimization.
It seems that 'num' is more readable compared to a constant. And 'virtqueue_add_*'
does not specify that only one buf is added, but ‘1’ is passed in ‘virtqueue_add’,
which limits the function of 'virtqueue_add_*'. Besides compilation optimization,
are there any other considerations.

>> ---
>> drivers/virtio/virtio_ring.c | 4 ++--
>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
>> index becc776..7583f8b 100644
>> --- a/drivers/virtio/virtio_ring.c
>> +++ b/drivers/virtio/virtio_ring.c
>> @@ -1760,7 +1760,7 @@ int virtqueue_add_outbuf(struct virtqueue *vq,
>> void *data,
>> gfp_t gfp)
>> {
>> - return virtqueue_add(vq, &sg, num, 1, 0, data, NULL, gfp);
>> + return virtqueue_add(vq, &sg, num, num, 0, data, NULL, gfp);
>> }
>> EXPORT_SYMBOL_GPL(virtqueue_add_outbuf);
>>
>> @@ -1782,7 +1782,7 @@ int virtqueue_add_inbuf(struct virtqueue *vq,
>> void *data,
>> gfp_t gfp)
>> {
>> - return virtqueue_add(vq, &sg, num, 0, 1, data, NULL, gfp);
>> + return virtqueue_add(vq, &sg, num, 0, num, data, NULL, gfp);
>> }
>> EXPORT_SYMBOL_GPL(virtqueue_add_inbuf);
>>
>> --