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