[dpdk-dev] [PATCH v1 01/10] app/test: introduce resources for tests

Thomas Monjalon thomas.monjalon at 6wind.com
Fri May 6 16:01:08 CEST 2016


2016-05-06 12:48, Jan Viktorin:
> --- /dev/null
> +++ b/app/test/resource.h
> @@ -0,0 +1,61 @@
> +/*-
> + *   BSD LICENSE
[...]
> + */

Please include a multi-line comment here to explain what is a resource
and why it is needed.

> +
> +#ifndef _RESOURCE_H_
> +#define _RESOURCE_H_
> +
|...]
|> +
> +TAILQ_HEAD(resource_list, resource);
> +extern struct resource_list resource_list;

Why extern?

> +
> +struct resource {
> +	const char *name;
> +	const char *beg;

begin?
Bruce is removing some megabytes from lpm tests, so we have
some room for field names ;)

> +	const char *end;
> +	TAILQ_ENTRY(resource) next;
> +};
> +
> +static inline size_t resource_size(const struct resource *r)

Why inline? It could be in .c

> +{
> +	return r->end - r->beg;
> +}
> +
> +const struct resource *resource_find(const char *name);
> +
> +void __resource_register(struct resource *r);

A comment is needed to explain the role of this function.
Why a double underscore?

> +#define REGISTER_RESOURCE(_n, _b, _e) \

I'm not a big fan of the underscores.

> +static struct resource linkres_ ##_n = {       \
> +	.name = RTE_STR(_n),     \
> +	.beg = _b,               \
> +	.end = _e,               \
> +};                               \
> +__REGISTER_RESOURCE(linkres_ ##_n)

Please avoid nested macros.

> +#define __REGISTER_RESOURCE(name)     \
> +static void __attribute__((constructor,used)) resinitfn_ ##name(void); \

Why declaring the function just before its implementation?

> +static void __attribute__((constructor,used)) resinitfn_ ##name(void) \
> +{                                   \
> +	__resource_register(&name); \
> +}



More information about the dev mailing list