[PATCH v14 1/6] memarea: introduce memarea library

Burakov, Anatoly anatoly.burakov at intel.com
Wed Jun 21 14:05:36 CEST 2023


On 2/9/2023 6:36 AM, Chengwen Feng wrote:
> The memarea library is an allocator of variable-size object which based
> on a memory region.
> 
> This patch provides rte_memarea_create() and rte_memarea_destroy() API.
> 
> Signed-off-by: Chengwen Feng <fengchengwen at huawei.com>
> Reviewed-by: Dongdong Liu <liudongdong3 at huawei.com>
> Acked-by: Morten Brørup <mb at smartsharesystems.com>
> ---


> +static int
> +memarea_check_param(const struct rte_memarea_param *init)
> +{
> +#define MEMAREA_MIN_SIZE	1024
> +	size_t len;
> +
> +	if (init == NULL) {
> +		RTE_MEMAREA_LOG(ERR, "init param is NULL!");
> +		return -EINVAL;
> +	}
> +
> +	len = strnlen(init->name, RTE_MEMAREA_NAMESIZE);
> +	if (len == 0 || len >= RTE_MEMAREA_NAMESIZE) {
> +		RTE_MEMAREA_LOG(ERR, "name size: %zu invalid!", len);
> +		return -EINVAL;
> +	}
> +
> +	if (init->source != RTE_MEMAREA_SOURCE_HEAP &&
> +	    init->source != RTE_MEMAREA_SOURCE_LIBC &&
> +	    init->source != RTE_MEMAREA_SOURCE_MEMAREA) {
> +		RTE_MEMAREA_LOG(ERR, "%s source: %d not supported!",
> +			init->name, init->source);
> +		return -EINVAL;
> +	}
> +
> +	if (init->total_sz < MEMAREA_MIN_SIZE) {
> +		RTE_MEMAREA_LOG(ERR, "%s total-size: %zu too small!",
> +			init->name, init->total_sz);
> +		return -EINVAL;
> +	}
> +
> +	if (init->source == RTE_MEMAREA_SOURCE_MEMAREA && init->src_ma == NULL) {
> +		RTE_MEMAREA_LOG(ERR, "%s source memarea is NULL!", init->name);
> +		return -EINVAL;
> +	}
> +
> +	if (init->alg != RTE_MEMAREA_ALGORITHM_NEXTFIT) {
> +		RTE_MEMAREA_LOG(ERR, "%s algorithm: %d not supported!",
> +			init->name, init->alg);
> +		return -EINVAL;
> +	}

Also, you're returning a lot of `errno` type values from this function, 
but you do not appear to use these values anywhere. I think it'd be 
better if you used the return value to set `rte_errno` to indicate what 
kind of error there was. The entire API could benefit from doing a pass 
on setting rte_errno in error cases, and documenting them.

-- 
Thanks,
Anatoly



More information about the dev mailing list