[dpdk-dev] [PATCH v2 4/7] vhost: do not use rte_memcpy for virtio_hdr copy
Yuanhan Liu
yuanhan.liu at linux.intel.com
Mon Mar 7 07:21:00 CET 2016
On Sun, Mar 06, 2016 at 08:20:00PM -0800, Stephen Hemminger wrote:
> On Thu, 18 Feb 2016 21:49:09 +0800
> Yuanhan Liu <yuanhan.liu at linux.intel.com> wrote:
>
> > +static inline void
> > +copy_virtio_net_hdr(struct vhost_virtqueue *vq, uint64_t desc_addr,
> > + struct virtio_net_hdr_mrg_rxbuf hdr)
> > +{
> > + if (vq->vhost_hlen == sizeof(struct virtio_net_hdr_mrg_rxbuf)) {
> > + *(struct virtio_net_hdr_mrg_rxbuf *)(uintptr_t)desc_addr = hdr;
> > + } else {
> > + *(struct virtio_net_hdr *)(uintptr_t)desc_addr = hdr.hdr;
> > + }
> > +}
> > +
>
> Don't use {} around single statements.
Oh, I was thinking that it's a personal preference. Okay, I will remove
them.
> Since you are doing all this casting, why not just use regular old memcpy
> which will be inlined by Gcc into same instructions anyway.
I thought there are some (tiny) differences: memcpy() is not an inlined
function. And I was thinking it generates some slightly more complicated
instructions.
> And since are always casting the desc_addr, why not pass a type that
> doesn't need the additional cast (like void *)
You have to cast it from "uint64_t" to "void *" as well while call it.
So, that makes no difference.
--yliu
More information about the dev
mailing list