[PATCH 07/17] examples/vhost: use previous value atomic fetch operations
Maxime Coquelin
maxime.coquelin at redhat.com
Thu Mar 2 15:47:44 CET 2023
On 3/2/23 01:47, Tyler Retzlaff wrote:
> Use __atomic_fetch_{add,and,or,sub,xor} instead of
> __atomic_{add,and,or,sub,xor}_fetch when we have no interest in the
> result of the operation.
>
> Reduces unnecessary codegen that provided the result of the atomic
> operation that was not used.
>
> Change brings closer alignment with atomics available in C11 standard
> and will reduce review effort when they are integrated.
>
> Signed-off-by: Tyler Retzlaff <roretzla at linux.microsoft.com>
> ---
> examples/vhost/main.c | 12 ++++++------
> examples/vhost/virtio_net.c | 4 ++--
> 2 files changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/examples/vhost/main.c b/examples/vhost/main.c
> index 42e53a0..bfe466f 100644
> --- a/examples/vhost/main.c
> +++ b/examples/vhost/main.c
> @@ -1048,9 +1048,9 @@ static unsigned check_ports_num(unsigned nb_ports)
> }
>
> if (enable_stats) {
> - __atomic_add_fetch(&dst_vdev->stats.rx_total_atomic, 1,
> + __atomic_fetch_add(&dst_vdev->stats.rx_total_atomic, 1,
> __ATOMIC_SEQ_CST);
> - __atomic_add_fetch(&dst_vdev->stats.rx_atomic, ret,
> + __atomic_fetch_add(&dst_vdev->stats.rx_atomic, ret,
> __ATOMIC_SEQ_CST);
> src_vdev->stats.tx_total++;
> src_vdev->stats.tx += ret;
> @@ -1068,9 +1068,9 @@ static unsigned check_ports_num(unsigned nb_ports)
> ret = vdev_queue_ops[vdev->vid].enqueue_pkt_burst(vdev, VIRTIO_RXQ, m, nr_xmit);
>
> if (enable_stats) {
> - __atomic_add_fetch(&vdev->stats.rx_total_atomic, nr_xmit,
> + __atomic_fetch_add(&vdev->stats.rx_total_atomic, nr_xmit,
> __ATOMIC_SEQ_CST);
> - __atomic_add_fetch(&vdev->stats.rx_atomic, ret,
> + __atomic_fetch_add(&vdev->stats.rx_atomic, ret,
> __ATOMIC_SEQ_CST);
> }
>
> @@ -1400,9 +1400,9 @@ static void virtio_tx_offload(struct rte_mbuf *m)
> }
>
> if (enable_stats) {
> - __atomic_add_fetch(&vdev->stats.rx_total_atomic, rx_count,
> + __atomic_fetch_add(&vdev->stats.rx_total_atomic, rx_count,
> __ATOMIC_SEQ_CST);
> - __atomic_add_fetch(&vdev->stats.rx_atomic, enqueue_count,
> + __atomic_fetch_add(&vdev->stats.rx_atomic, enqueue_count,
> __ATOMIC_SEQ_CST);
> }
>
> diff --git a/examples/vhost/virtio_net.c b/examples/vhost/virtio_net.c
> index 1d4737f..514c8e0 100644
> --- a/examples/vhost/virtio_net.c
> +++ b/examples/vhost/virtio_net.c
> @@ -231,7 +231,7 @@
> rte_prefetch0(&vr->desc[desc_indexes[i+1]]);
> }
>
> - __atomic_add_fetch(&vr->used->idx, count, __ATOMIC_RELEASE);
> + __atomic_fetch_add(&vr->used->idx, count, __ATOMIC_RELEASE);
> queue->last_used_idx += count;
>
> rte_vhost_vring_call(dev->vid, queue_id);
> @@ -442,7 +442,7 @@
> queue->last_avail_idx += i;
> queue->last_used_idx += i;
>
> - __atomic_add_fetch(&vr->used->idx, i, __ATOMIC_ACQ_REL);
> + __atomic_fetch_add(&vr->used->idx, i, __ATOMIC_ACQ_REL);
>
> rte_vhost_vring_call(dev->vid, queue_id);
>
Reviewed-by: Maxime Coquelin <maxime.coquelin at redhat.com>
Thanks,
Maxime
More information about the dev
mailing list