On Mon,  1 Oct 2018 13:56:09 +0100
Anatoly Burakov <anatoly.bura...@intel.com> wrote:

> diff --git a/lib/librte_eal/common/include/rte_eal_memconfig.h 
> b/lib/librte_eal/common/include/rte_eal_memconfig.h
> index aff0688dd..1d8b0a6fe 100644
> --- a/lib/librte_eal/common/include/rte_eal_memconfig.h
> +++ b/lib/librte_eal/common/include/rte_eal_memconfig.h
> @@ -30,6 +30,7 @@ struct rte_memseg_list {
>               uint64_t addr_64;
>               /**< Makes sure addr is always 64-bits */
>       };
> +     size_t len; /**< Length of memory area covered by this memseg list. */
>       int socket_id; /**< Socket ID for all memsegs in this list. */
>       uint64_t page_sz; /**< Page size for all memsegs in this list. */
>       volatile uint32_t version; /**< version number for multiprocess sync. */

If you are going to break ABI, why not try and rearrange to eliminate holes:

Output of pahole (on x86 64 bit):

struct rte_memseg_list {
        union {
                void *             base_va;              /*     0     8 */
                uint64_t           addr_64;              /*     0     8 */
        };                                               /*     0     8 */
        size_t                     len;                  /*     8     8 */
        int                        socket_id;            /*    16     4 */

        /* XXX 4 bytes hole, try to pack */

        uint64_t                   page_sz;              /*    24     8 */
        volatile uint32_t          version;              /*    32     4 */

        /* XXX 4 bytes hole, try to pack */

        struct rte_fbarray         memseg_arr;           /*    40    96 */

        /* XXX last struct has 4 bytes of padding */

        /* size: 136, cachelines: 3, members: 6 */
        /* sum members: 128, holes: 2, sum holes: 8 */
        /* paddings: 1, sum paddings: 4 */
        /* last cacheline: 8 bytes */
};

Reply via email to