[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