[dpdk-dev] [PATCH] mbuf: fix compile by making sched struct visible

Stephen Hemminger stephen at networkplumber.org
Thu Jan 10 23:05:11 CET 2019


On Thu, 10 Jan 2019 16:50:51 +0000
Harry van Haaren <harry.van.haaren at intel.com> wrote:

> Although C compilation works with the struct rte_mbuf_sched
> declared inside the struct rte_mbuf namespace, C++ fails to
> compile. This fix moves the rte_mbuf_sched struct up to the
> global namespace, instead of declaring it inside the struct
> mbuf namespace.
> 
> The struct rte_mbuf_sched is being used on the stack in
> rte_mbuf_sched_get() and as a cast in _set(). For this
> reason, it must be exposed as an available type.
> 
> Fixes: 5d3f72100904 ("mbuf: implement generic format for sched field")
> 
> Signed-off-by: Harry van Haaren <harry.van.haaren at intel.com>
> 
I believe this was done so that the compiler doesn't generate
bad code.

If you reference the mbuf to get the fields then each operation becomes
a load shift and mask operation to get to the bitfield.  But if they
are local then this is all done on a single register value.

Check the generated code.

One solution would be to move this into a private header file
where C++ won't find it.


More information about the dev mailing list