Hi William, just a few minor corrections remain, please see inline. 2021-08-14 02:51 (UTC+0000), William Tu: [...] > diff --git a/lib/eal/common/eal_common_devargs.c > b/lib/eal/common/eal_common_devargs.c > index 23aaf8b7e4..7edc6798fe 100644 > --- a/lib/eal/common/eal_common_devargs.c > +++ b/lib/eal/common/eal_common_devargs.c > @@ -9,6 +9,7 @@ > #include <stdio.h> > #include <string.h> > #include <stdarg.h> > +#include <sys/queue.h> > > #include <rte_bus.h> > #include <rte_class.h> > @@ -18,6 +19,7 @@ > #include <rte_errno.h> > #include <rte_kvargs.h> > #include <rte_log.h> > +#include <rte_os.h>
Not needed, included by `rte_bus.h` -> `rte_common.h` -> `rte_os.h`. > #include <rte_tailq.h> > #include "eal_private.h" If you included <sys/queue.h> from `eal_private.h`, you would need to modify much fewer files in EAL. > > @@ -291,7 +293,7 @@ rte_devargs_insert(struct rte_devargs **da) > if (*da == NULL || (*da)->bus == NULL) > return -1; > > - TAILQ_FOREACH_SAFE(listed_da, &devargs_list, next, tmp) { > + RTE_TAILQ_FOREACH_SAFE(listed_da, &devargs_list, next, tmp) { > if (listed_da == *da) > /* devargs already in the list */ > return 0; > @@ -358,7 +360,7 @@ rte_devargs_remove(struct rte_devargs *devargs) > if (devargs == NULL || devargs->bus == NULL) > return -1; > > - TAILQ_FOREACH_SAFE(d, &devargs_list, next, tmp) { > + RTE_TAILQ_FOREACH_SAFE(d, &devargs_list, next, tmp) { > if (strcmp(d->bus->name, devargs->bus->name) == 0 && > strcmp(d->name, devargs->name) == 0) { > TAILQ_REMOVE(&devargs_list, d, next); [...] > diff --git a/lib/eal/windows/include/rte_os.h > b/lib/eal/windows/include/rte_os.h > index 66c711d458..54892ab89c 100644 > --- a/lib/eal/windows/include/rte_os.h > +++ b/lib/eal/windows/include/rte_os.h > @@ -18,6 +18,37 @@ > extern "C" { > #endif Comment about compatibility with the bundled sys/queue.h is lost. > +#define RTE_TAILQ_HEAD(name, type) \ > +struct name { \ > + struct type *tqh_first; /* first element */ \ > + struct type **tqh_last; /* addr of last next element */ \ > +} > +#define RTE_TAILQ_ENTRY(type) \ > +struct { \ > + struct type *tqe_next; /* next element */ \ > + struct type **tqe_prev; /* address of previous next element */ \ > +} > +#define RTE_TAILQ_FOREACH(var, head, field) \ > + for ((var) = RTE_TAILQ_FIRST((head)); \ > + (var); \ > + (var) = RTE_TAILQ_NEXT((var), field)) > +#define RTE_TAILQ_FOREACH_SAFE(var, head, field, tvar) \ > + for ((var) = TAILQ_FIRST((head)); \ > + (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \ > + (var) = (tvar)) > +#define RTE_TAILQ_FIRST(head) ((head)->tqh_first) > +#define RTE_TAILQ_NEXT(elm, field) ((elm)->field.tqe_next) > +#define RTE_STAILQ_HEAD(name, type) \ > +struct name { \ > + struct type *stqh_first;/* first element */ \ > + struct type **stqh_last;/* addr of last next element */ \ > +} > +#define RTE_STAILQ_ENTRY(type) \ > +struct { \ > + struct type *stqe_next; /* next element */ \ > +} > + > + Redundant newline.