18/01/2021 16:16, Xueming Li:
> In current design, legacy parser rte_devargs_parse() saved scratch
> buffer to devargs.args while new parser rte_devargs_layers_parse() saved
> to devargs.data. Code using devargs had to know the difference and
> cleaned up memory accordingly - error prone.
> 
> This patch unifies data the dedicate scratch buffer, introduces
> rte_devargs_free() function to wrap the memory memory clean up.
> 
> Signed-off-by: Xueming Li <xuemi...@nvidia.com>
> ---
> --- a/lib/librte_eal/include/rte_devargs.h
> +++ b/lib/librte_eal/include/rte_devargs.h
> @@ -60,16 +60,16 @@ struct rte_devargs {
>       /** Name of the device. */
>       char name[RTE_DEV_NAME_MAX_LEN];
>       RTE_STD_C11
> -     union {
> -     /** Arguments string as given by user or "" for no argument. */
> -             char *args;
> +     union { /**< driver-related part of device string. */
> +             const char *args; /**< legacy name. */
>               const char *drv_str;
>       };
>       struct rte_bus *bus; /**< bus handle. */
>       struct rte_class *cls; /**< class handle. */
>       const char *bus_str; /**< bus-related part of device string. */
>       const char *cls_str; /**< class-related part of device string. */
> -     const char *data; /**< Device string storage. */
> +     char *data; /**< Scratch buffer. */
> +     const char *src; /**< Arguments given by user. */

Adding a field changes the size of the struct, which is an ABI break.
We need to plan this change for DPDK 21.11.
Let's think what can be done in the meantime.


Reply via email to